我必須在我的應用程序中實現版本檢查器。該應用程序將檢查服務器的版本(手動設置)。事情是,服務器既不返回JSON
或XML
中的響應。它返回原始text/html
,我不熟悉。用AFNetworking解析Content-Type文本/ html
例如。如果應用程序需要更新,它將返回如下響應。
<checkversion>
<update>TRUE</update>
<status>MINOR</status>
<alert></alert>
<version>1.0.0</version>
<ituneslink>0</ituneslink>
</checkversion>
否則,它將返回如下響應。
<checkversion>
<update>FALSE</update>
</checkversion>
看着有些相似,所以帖子如this和this後,我設法得到的string
格式的響應。以下是我的代碼片段。
- (void)slurpVersionChecker
{
NSString *versionURL = @"api";
NSDictionary *params = @{@"api_key":@"key"};
AFHTTPRequestOperationManager *requestManager = [AFHTTPRequestOperationManager manager];
[requestManager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
[requestManager POST:versionURL parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"version: %@", string);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"failed to check version: %@", error);
}];
}
問題是,我該如何解析每個響應?是否有任何方法可以通過responseObject
直接解析響應而不將其轉換爲String
?
這並不似乎是HTML。你的意思是說服務器返回Content-Type text/html的響應嗎? – 2014-09-30 14:54:01
服務器返回的內容類型是謊言。這是服務器端的缺陷。如果可能的話,與Web服務提供商合作,讓他們解決這個問題。如果你不能修復這個缺陷,那麼你應該能夠把響應當作XML處理。 **警告**:盲目地將響應視爲XML,因爲服務器缺陷可能會變得脆弱。小心數據。 – 2014-09-30 14:58:22
@jshier好吧,這證實了它,因爲這不是一個html標籤。是的,服務器返回Content-Type文本/ html。 – 2014-10-01 01:11:29