0

我尝试使用的 API 在检索时返回乱码 XML。
这是将身份验证参数发布到端点的基本代码。

[[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 只是错误地返回了这个?

4

1 回答 1

1

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

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

那是合法的。而且由于我写的“一些文本”是text,因此将任何左尖括号写为左尖括号实体是正确的(也是必需的)。

包含网页原始 HTML 的 RSS 提要的工作方式完全相同。例如,我的应用程序“TidBITS News”呈现以这种方式到达的网页内容(在 UIWebView 中),作为节点的内容,实体化。

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

于 2013-05-02T19:27:14.900 回答