【问题标题】:How to Post xml within Json object in NSURLConnection?如何在 NSURLConnection 的 Json 对象中发布 xml?
【发布时间】:2013-12-13 12:15:14
【问题描述】:

您好,我想在 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 正在获取Null。 我哪里错了?

- (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);
}

【问题讨论】:

    标签: iphone xml post nsurlconnection


    【解决方案1】:

    首先,您必须在使用前转义您的 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,Content-Type 应该设置为“application/json”,然后,

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

    顺便说一句,您检查过变量“_responseData”吗?我认为它也是空的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 2018-11-20
      • 2019-12-06
      • 1970-01-01
      • 2020-10-20
      • 2015-07-09
      相关资源
      最近更新 更多