我正在做一个项目,我正在准备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']);
改成