【问题标题】:SOAP xml response issue in iphone programmingiphone编程中的SOAP xml响应问题
【发布时间】:2013-11-19 05:50:36
【问题描述】:

我是 iPhone 和 SOAP XML 请求的新手。我正在使用 SOAP Web 服务从服务器获取响应。我收到以下响应:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AuthenticateResponse xmlns="http://tempuri.org/">
<AuthenticateResult>
&lt;DocumentElement&gt;
&lt;Status&gt;
&lt;EMAIL&gt;True&lt;/EMAIL&gt;
&lt;PASSWORD&gt;true&lt;/PASSWORD&gt;
&lt;/Status&gt;
&lt;/DocumentElement&gt;
</AuthenticateResult>
</AuthenticateResponse>
</soap:Body>
</soap:Envelope>

作为响应,没有得到开始和结束标记。这就是为什么在将其读取解析为字符串时,我无法获取 EMAIL 和 PASSWORD 的值。我正在使用 NSXMLParser 来解析响应。有什么方法可以转换吗? 请帮助我,在此先感谢。

【问题讨论】:

    标签: ios iphone objective-c soap nsxmlparser


    【解决方案1】:

    有一个class 可让您对 HTML 实体进行编码/解码。用法很简单,只要把它包含在你的类中即可。它提供了以下方法:

    - (NSString *)stringByConvertingHTMLToPlainText;
    - (NSString *)stringByDecodingHTMLEntities;
    - (NSString *)stringByEncodingHTMLEntities;
    

    所以你可以这样做:

    NSString *convertedString = [responseString stringByDecodingHTMLEntities];
    

    【讨论】:

    • 谢谢 Nikos M.,现在我得到了正确的 HTML 标签,但是在 NSXMLParser 中我们必须发送 NSData 而不是 NSString。我怎样才能将此 NSString 发送到 NSXMLParser??
    【解决方案2】:
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    

    您可以将任何 NSString 转换为 NSData,然后传递给 NSXMLParser。

    【讨论】:

    • 谢谢,我也做了。
    【解决方案3】:

    您可以使用以下方法将 NSString 转换为 NSData:

    NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
    

    【讨论】:

    • 是的,我也是这样做的,谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2022-01-17
    相关资源
    最近更新 更多