繁体   English   中英

从iPhone到POST xml到PHP

[英]POST xml from iPhone to PHP

我正在一个项目中,我正在准备API以与iPhone中的服务器进行交互。

我使用POST参数xmlrequest创建了API,并在该参数中传递了xml内容。

一切工作正常,除了在xml内容中如果出现任何特殊字符时,它将在服务器端中断。

我的问题是,我是否应该在两端都应用任何标头/内容类型,如果可以,我可以举个例子吗?

编辑:

这是一个特殊字符的问题,在xml内容中,我尝试将“&”替换为“ and”并且有效,但是当我尝试将“&”替换为“&”时,则不起作用。

在HTTP中,GET-和POST-参数用特殊字符?分隔? &= 我确定您已经在URLS中看到了类似的内容: example.com?foo=bar&meow=woof foo=bar&meow= example.com?foo=bar&meow=woof

您的服务器将解析查询字符串,并假定每次出现& ,它都是一个新参数。 因此,为了传递这样的特殊字符,您首先需要对其进行URL编码(在iPhone端)。 例如,URL编码的空格字符将为%20

然后,您可以使用urldecode()rawurldecode()在服务器端解码URL编码的字符串。

如果XML由PHP生成/处理,则可以在CDATA标记中传递问题区域,或者实现htmlentitieshtmlspecialchars等。 那里的这个问题有很多

你能详细说明一下吗

它在服务器端切断。

多亏了Andre_roesti,他给了我正确的方向。 这是我编码要传递给POST方法的特殊字符的解决方案。

iPhone面:

@interface NSString (URLEncode)
-(NSString *)urlEncode;
@end

@implementation NSString (URLEncode)
-(NSString *)urlEncode{
  return [(NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, CFSTR("=,!$&'()*+;@?\n\"<>#\t :/"),kCFStringEncodingUTF8) autorelease];
}
@end

PHP方面:

我做了$xmlrequest = html_entity_decode($_POST['xmlrequest']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM