POST xml from iPhone to PHP


POST xml from iPhone to PHP

我正在做一个项目,我正在准备API与iPhone服务器交互。

我已经创建了带有POST参数xmlrequest的API,并在该参数中传递xml内容。

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

我的问题是我是否应该在两边应用任何标题/内容类型,如果是,我可以得到示例吗?

编辑:

这是一个特殊字符的问题,在xml内容中,我试图用"answers"代替"&",它工作了,但是当我试图用"&"代替"&"时,它不起作用。

在HTTP协议中,GET和POST参数之间用特殊字符?&=分隔。我相信你已经在url: example.com?foo=bar&meow=woof

中看到过类似的东西了。

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

您可以在服务器端使用urldecode()rawurldecode()解码url编码的字符串

您可以在CDATA标记中传递问题区域,或者如果XML是由PHP生成/处理的,可以实现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']);改成