Objective-C-Base64字符串到Base64二进制(XML)

Objective-C-Base64字符串到Base64二进制(XML),objective-c,xml,soap,base64,Objective C,Xml,Soap,Base64,我正在iOS上开发一个应用程序,请求使用SOAP提供web服务,但我遇到了数据类型xsd:base64Binary(XML)的问题 我根据web服务中的预期字段构建SOAP信封。当类型为xsd:string或xsd:integer或任何其他简单类型时,我没有问题。 但是,当我尝试向SOAP信封添加xsd:base64Binary类型时,web服务无法正确接收数据;这似乎是一个编码问题,但我无法理解 例如,信封看起来像: <?xml version="1.0" encoding="utf-8

我正在iOS上开发一个应用程序,请求使用SOAP提供web服务,但我遇到了数据类型xsd:base64Binary(XML)的问题

我根据web服务中的预期字段构建SOAP信封。当类型为xsd:string或xsd:integer或任何其他简单类型时,我没有问题。 但是,当我尝试向SOAP信封添加xsd:base64Binary类型时,web服务无法正确接收数据;这似乎是一个编码问题,但我无法理解

例如,信封看起来像:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- to instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <hereTheMethod xmlns="http://heretheaddress/">
      <aBase64>/9j/4AAQSkZJRgAB...
              ...RRQAUUUUAf/Z</aBase64>
      <aBool>false</aBool>
      <anInt>89</anInt>
      <aDouble>0.0</aDouble>
      <aString>Hello</aString>
    </hereTheMethod>
  </soap12:Body>
</soap12:Envelope>
请注意,该应用程序也适用于Android(Java),并且可以正确地使用相同的web服务

谢谢你的帮助


PS:对不起,我的英文是:///p>请尝试对Base64字符串使用CDATA,如下所示:

<aBase64><![CDATA[%@]]></aBase64>\n
\n

尝试对Base64字符串使用CDATA,如下所示:

<aBase64><![CDATA[%@]]></aBase64>\n
\n

根据,使用CDATA是一个好主意,但它不起作用;web服务接收到的字符串与以前完全相同:/但是感谢您的回答。非常欢迎您。。。但是你能告诉我你有什么确切的错误吗?我在你的代码中有同样的东西,它工作正常。web服务接收的字符串无效:正如我所写的,当在标记base64二进制中发送“/9j/4AAQSkZJRgAB…rrqauuaf/Z”这样的字符串时,web服务检索到的字符串是“����JFIF��XExifMM*�i&…“而不是预期的“/9j/4AAQSkZJRgAB…RRQAUUUAF/Z”。我希望我足够清楚,很难更准确地解释,因为我不是创建web服务的人。好的,我理解,但我不知道这里的确切问题是什么?可以更改web方法参数。只为XML提供一个参数,并在一个XML字符串中提供所有信息,如aBool、aBase64,然后使用CDATA将该XML作为参数发送。也许这就够了。据我所知,使用CDATA是一个好主意,但它不起作用;web服务接收到的字符串与以前完全相同:/但是感谢您的回答。非常欢迎您。。。但是你能告诉我你有什么确切的错误吗?我在你的代码中有同样的东西,它工作正常。web服务接收的字符串无效:正如我所写的,当在标记base64二进制中发送“/9j/4AAQSkZJRgAB…rrqauuaf/Z”这样的字符串时,web服务检索到的字符串是“����JFIF��XExifMM*�i&…“而不是预期的“/9j/4AAQSkZJRgAB…RRQAUUUAF/Z”。我希望我足够清楚,很难更准确地解释,因为我不是创建web服务的人。好的,我理解,但我不知道这里的确切问题是什么?可以更改web方法参数。只为XML提供一个参数,并在一个XML字符串中提供所有信息,如aBool、aBase64,然后使用CDATA将该XML作为参数发送。但愿这能奏效。
<aBase64><![CDATA[%@]]></aBase64>\n