[英]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标记中传递问题区域,或者实现htmlentities , htmlspecialchars等。 那里的这个问题有很多 。
你能详细说明一下吗
它在服务器端切断。
多亏了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.