从Web服务响应中保存为NSString对象的硬编码字节中获取NSString / NSData对象

时间:2010-03-04 14:09:31

标签: iphone cocoa cocoa-touch nsstring nsdata

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

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

  2. 此字节数组转换为字符串

  3. 此字符串放入XML包装元素

  4. 通过HTTP响应

  5. 返回包装器

    因此,我需要知道如何将响应数据转换回以前的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字符串表示形式?

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

    最诚挚的问候, 大卫

1 个答案:

答案 0 :(得分:1)

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

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