我正在尝试使用NSURLsession发送肥皂消息。 - (NSString *)createSoapMessage {
self.soapMessage=[NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
"<soap:Body>"
"<F2 xmlns=\"website address\">"
"<a>%@</a>"
"<b>%@</b>"
"<c>U(GHB&@DG)</c>"
"</F2>"
"</soap:Body>"
"</soap:Envelope>",@"username",@"password"];
NSLog(@"%@", _soapMessage);
return self.soapMessage;}
然后使用NSMutableURLRequest我构建请求并使用NSURLSession将其作为POST传递。
然而,当我有&#34;&amp;&#34;时,我没有得到任何回应。作为在U(GHB&amp; @DG)中传递的字符串的一部分。 o / P是 &#34; DONE。收到的字节数:0&#34;
然而,当我传递任何其他没有&#34;&amp;&#34;的字符串时,一切正常。
U(GHB @ DG)给我输出DONE。收到的字节数:333
我是目标C的新手,我错过了什么。
我的同事在Android中使用同样的东西,他正在使用&#34;&amp;&#34;另外,所以我不知道它在服务器端的问题。
答案 0 :(得分:0)
由于您正在生成请求,因此您负责正确编码XML数据,以便使用特殊字符,例如&amp;和&lt;不是在服务器上正确解析XML的数据的一部分。
因此,您可以在XML标记的值中使用CDATA
标记 -
<![CDATA[
U(GHB&@DG)
]]>
或者你可以替换所有'&amp;''使用&
或&
您可以使用String方法手动执行此操作,方法是替换出现或尝试在传递之前对字符串进行编码。
提到了XML中特殊字符的完整列表here