我试图使用的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/"><MorningStar_BCE_WS><MyUserInfo><Tenant_Id>37</Tenant_Id><MsClient>OBC05</MsClient><Suite_Location>DA</Suite_Location><pseq>6690</pseq><CPResetAccess>false</CPResetAccess><CCPayor>N</CCPayor><CPAllowFinancial>false</CPAllowFinancial><CPAllowScheduler>true</CPAllowScheduler><CPAllowService>false</CPAllowService><FirstName>Gary</FirstName><LastName>Evans</LastName><OfferCC>Y</OfferCC><AllowACH>Y</AllowACH><MerchantAccount>121513</MerchantAccount><SQID>0</SQID><SQID2>0</SQID2><Ecom_payment_recurring /></MyUserInfo></MorningStar_BCE_WS></string>
我做错了什么,或者API只是错误地返回了这个?
答案 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。