AFNetworking XMLResponse主体是HTML编码的,无法解析

时间:2013-05-02 01:44:48

标签: ios xml afnetworking

我试图使用的API是在检索时返回乱码XML 这是将auth params发布到端点的基本代码。

[[APIManager sharedManager] postPath:@"Authenticate"
                          parameters:params
                             success:^(AFHTTPRequestOperation *operation, XMLParser *xmlParser ) {
                                 //code
                                 NSLog(@"Raw XML Data: %@", [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding]);

                             }
                             failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                 //code
                                 DLog(@"error: %@", error);
                             }];

我得到的回应是这样的乱码:

Raw XML Data: <?xml version="1.0" encoding="utf-8"?><string xmlns="http://www.morningstarsoftware.com/">&lt;MorningStar_BCE_WS&gt;&lt;MyUserInfo&gt;&lt;Tenant_Id&gt;37&lt;/Tenant_Id&gt;&lt;MsClient&gt;OBC05&lt;/MsClient&gt;&lt;Suite_Location&gt;DA&lt;/Suite_Location&gt;&lt;pseq&gt;6690&lt;/pseq&gt;&lt;CPResetAccess&gt;false&lt;/CPResetAccess&gt;&lt;CCPayor&gt;N&lt;/CCPayor&gt;&lt;CPAllowFinancial&gt;false&lt;/CPAllowFinancial&gt;&lt;CPAllowScheduler&gt;true&lt;/CPAllowScheduler&gt;&lt;CPAllowService&gt;false&lt;/CPAllowService&gt;&lt;FirstName&gt;Gary&lt;/FirstName&gt;&lt;LastName&gt;Evans&lt;/LastName&gt;&lt;OfferCC&gt;Y&lt;/OfferCC&gt;&lt;AllowACH&gt;Y&lt;/AllowACH&gt;&lt;MerchantAccount&gt;121513&lt;/MerchantAccount&gt;&lt;SQID&gt;0&lt;/SQID&gt;&lt;SQID2&gt;0&lt;/SQID2&gt;&lt;Ecom_payment_recurring /&gt;&lt;/MyUserInfo&gt;&lt;/MorningStar_BCE_WS&gt;</string>

我做错了什么,或者API只是错误地返回了这个?

1 个答案:

答案 0 :(得分:1)

他们选择做的事情很奇怪,但并不是疯了。他们返回完全有效的XML,具有以下结构:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://www.morningstarsoftware.com/">
   Some Text
</string>

这是合法的。因为我写的“Some Text”是 text ,所以将任何左尖括号写为左角括号实体是正确的(并且是必需的)。

包含网页原始HTML的RSS源的工作方式完全相同。例如,我的应用程序“TidBITS新闻”呈现的Web页面内容(在UIWebView中)以与实体化的节点内容相同的方式到达。

这没有任何问题,因为当您的XML解析器要求<string>元素的内容时,实体将被转换回实际的尖括号,并且您将获得一个可以执行的字符串与...有关。在您的情况下,您将对该字符串执行的操作是将 it 解析为XML。