2013-12-13 24 views
1

您好我想在JSON對象中發佈XML數據。如何在NSURLConnection中的Json對象中發佈xml?

這是我發佈

[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
NSString *postString = [NSString stringWithFormat:@"{\"UserId\":\"%@\",\"UserDataXML\":\"%@\"}",@"USRfa9210bad85165d5",@"<Root Bookmark=\"Page1\">\\u000d\\u000a <Name>MyName<\Name>\\u000d\\u000a <Address>MyAddress<\ Address></Root>"]; 
NSData *requestData = [postString dataUsingEncoding:NSUTF8StringEncoding]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-length"]; 
[request setHTTPBody:requestData]; 

在connectionDidFinishLoading _responseData是來時的路,但responsedict越來越空。 我哪裏出錯了?

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{  
     NSLog(@"_responseData %@",_responseData); 
     NSString *responseString = [[NSString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding]; 
     NSError *error; 
     NSData *jsonData = [responseString dataUsingEncoding:NSUTF8StringEncoding]; 
     NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 
     NSLog(@"responseDict %@",responseDict); 
} 

回答

0

首先,你必須在使用前逃脫你的JSON。

然後,

(1)如果服務器僅與形狀數據響應,後的數據必須是一對鍵和值。

NSString *postString = [NSString stringWithFormat:@"UserId=%@&UserDataXML=%@", 
    @"USRfa9210bad85165d5", 
    @"<Root Bookmark=\\\"Page1\\\">\\u000d\\u000a<Name>MyName</Name>\\u000d\\u000a<Address>MyAddress</Address></Root>"]; 

(2)如果服務器只與JSON響應,內容類型應設置爲 「應用程序/ JSON」,然後,

NSString *postString = [NSString stringWithFormat:@"{\"UserId\":\"%@\", \"UserDataXML\":\"%@\"}", 
    @"USRfa9210bad85165d5", 
    @"<Root Bookmark=\\\"Page1\\\">\\u000d\\u000a<Name>MyName</Name>\\u000d\\u000a<Address>MyAddress</Address></Root>"]; 

順便說一句,你檢查變量「_responseData 「?我認爲它也是空的。