"&""&"作为其中一个元素中的字符串,客观c

时间:2018-04-13 01:24:36

标签: ios objective-c soap nsurlsession

我正在尝试使用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;另外,所以我不知道它在服务器端的问题。

1 个答案:

答案 0 :(得分:0)

由于您正在生成请求,因此您负责正确编码XML数据,以便使用特殊字符,例如&amp;和&lt;不是在服务器上正确解析XML的数据的一部分。

因此,您可以在XML标记的值中使用CDATA标记 -

<![CDATA[
   U(GHB&@DG)
 ]]>

或者你可以替换所有'&amp;''使用&amp;&#38;您可以使用String方法手动执行此操作,方法是替换出现或尝试在传递之前对字符串进行编码。

提到了XML中特殊字符的完整列表here