0
我想解析XML數據。我沒有使用XMLParser。我用下面的代碼,它以某種方式工作。我將XML解析爲JSON,並以字典格式獲得響應。下面是我的代碼 -解析XML數據目標c
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSError *jsonError;
if (error == nil){
NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if (jsonError) {
NSLog(@"Error : %@",error);
failureBlock(@{@"ErrorCode": [NSString stringWithFormat: @"%ld", (long)jsonError.code],
@"ErrorText": jsonError.localizedDescription});
} else {
NSLog(@"success : %@",jsonResponse);
successBlock(jsonResponse);
}
}else{
failureBlock(@{@"ErrorCode": [NSString stringWithFormat: @"%ld", (long)error.code],
@"ErrorText": error.localizedDescription});
}
}] resume];
雖然這是工作,但突然間,我開始收到錯誤消息像 -
ErrorCode = 3840;
ErrorText = "The data couldn\U2019t be read because it isn\U2019t in the correct format.";
那麼它是如何工作的前面?有人可以請指導我如何編寫正確的XML解析。如果首先重定向到上面的代碼中繞過的登錄頁面,並且我們直接獲取XML響應,也是xml url。在應用程序中,我們擁有用於登錄的UIWebView容器,並且我們可以在每次服務調用時獲取這些Cookie。在上面的代碼中,它在工作時繞過登錄頁面並以json格式返回響應。我也試過以下代碼 -
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:data];
[xmlparser setDelegate:self];
[xmlparser parse];
}] resume];
然後寫了didStartElement,foundCharacters和didEndElement。但它試圖解析登錄頁面本身。如果我使用NSXMLParser,登錄頁面不會被繞過。
請幫忙,任何建議是最受歡迎的。
轉換爲字符串格式'的NSString您迴應*的myString = [[NSString的頁頭] initWithData: myData編碼:NSUTF8StringEncoding]; ',NSLog日誌生成的字符串,並檢查它是否在正確的格式。 – Harsh
使用http://jsonlint.com/用於JSON或http://www.xmlvalidation.com/用於驗證XML響應是否正確。 – Harsh
@Harsh是的,我確實打印了數據,看起來我的第一種方法並沒有繞過登錄頁面。我改變了網址,它開始工作,但是第一種方法是解析XML的權利? –