【问题标题】:Get NSString/NSData object from hardcoded bytes saved as NSString object in webservice response从 Web 服务响应中保存为 NSString 对象的硬编码字节获取 NSString/NSData 对象
【发布时间】:2010-03-04 14:09:30
【问题描述】:

我正在使用 iPhone SDK,我必须处理从外部服务收到的 Web 服务响应。

  1. 响应数据由一个以 UTF8 编码为字节数组的 XML 字符串组成。

  2. 这个字节数组被转换成字符串

  3. 这个字符串被放入一个 XML 包装器元素中

  4. 包装器通过 HTTP 响应返回

因此,我需要知道如何将响应数据转换回原来的 XML 字符串。不幸的是,我无法更改创建响应的方式,所以我必须以某种方式处理它。

我从网络服务获得的原始数据示例:

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body><ExportBytesResponse xmlns="http://knowledgepark-ag.com/webservices/">
    <ExportBytesResult>PERhdGE+PFJlY29yZCBEQj0iOTk5OTQiIEtleT0iMjA1Mjc0Ij48U2luZ2xlIEl0ZW1JZD0iQVJCUEFLRVQiIFZhbHVlPSIyOTAiIC8+PFNpbmdsZSBJdGVtSWQ9IkhET0tOUiIgVmFsdWU9IjIwNTI3NCIgLz48U2luZ2xlIEl0ZW1JZD0iVkVSQSIgVmFsdWU9IjEuNzEuMzIxMy4xNzU3NyIgLz48U2luZ2xlIEl0ZW1JZD0iRElTIiBWYWx1ZT0iR2VNLCBNw6RyIDEwIDIwMDggIDU6NDFQTTomI3hEO1ouenQuIGV4aXNpdGVydCBrZWluZSBNw7ZnbGljaGtlaXQgZGFzIEJlZW5kZW4gZWluZXMgTW9kdWxzIGR1cmNoIEFiYnJlY2hlbiBvZGVyIEhhcmQtQ2xvc2UtWCB6dSBlcmZhaHJlbi4gQW4gZGllc2VyIFN0ZWxsZSBtw7xzc3RlbiBtZWlzdCBVc2VydmFycyBkZXMgTW9kdWxzIGdlbMO2c2NodCB3ZXJkZW4uIE9kZXIgYW5kZXJlIEF1ZnLDpHVtYWt0aW9uIGR1cmNoZ2Vmw7xocnQgd2VyZGVuLiYjeEE7RUxLRUcgMDYuMDguMjAwOCAwOToyMToxNyYjeEE7JiN4QTsgQmVpc3BpZWxhdWZiYXUgOiYjeEQ7JiN4QTsmbHQ7Q2xv</ExportBytesResult>
</ExportBytesResponse></s:Body>

如何取回隐藏在这些原始字节中的旧 xml 字符串表示形式?

非常感谢任何帮助,我现在因为无法提出解决方案而感到愚蠢。

最好的问候, 大卫

【问题讨论】:

  • 您的数据是在 ExportBytesResult 节点中,还是您在问如何将整个数据转回 XML?
  • 我想将 节点内的原始数据转换回其原始 XML 表示形式。这必须以某种方式与 [NSString stringWithBytes ...] 一起工作,但直到现在我才能让它与类似的东西一起工作。
  • 对了。 ExportBytesResult 的内容是 Base64 编码的。

标签: iphone cocoa cocoa-touch nsstring nsdata


【解决方案1】:

ExportBytesResponse 是 Base64 编码的,因此您必须首先使用 something like this 解码该节点。

这将为您提供一个包含 XML 的 NSString。然后你可以使用NSXMLParser来解析你的数据。

【讨论】:

  • 谢谢,这就是问题所在。 Windows Azure AppFabric 显然使用 Base64 对响应中的字节数组进行编码。
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2014-09-24
  • 2023-03-07
相关资源
最近更新 更多