json post请求方法

时间:2014-12-24 05:23:40

标签: iphone json

 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic
                                                       options:NSJSONWritingPrettyPrinted error:nil];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    NSString *encodedString = [jsonString base64EncodedString];

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@wsName",baseUrl]];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setValue:encodedString forHTTPHeaderField:@"Data"];

1 个答案:

答案 0 :(得分:0)

这没有意义。你正在创建JSON,base-64编码它(你永远不需要base-64编码JSON;如果你真的想加密它,你必须提出更好的东西),并设置标题Data与此同时,同时提供Content-Type通知服务器该请求是XML,即使它不是。

如果服务器期待JSON,您只需发送JSON:

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:0 error:&error];

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@wsName",baseUrl]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request addValue: @"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];

如果服务器需要XML,则使用text/xml的{​​{1}}或application/xml设置,但您也必须(a)构建XML内容; (b)将其提供给Content-Type

如果您想保护请求,请使用setHTTPBody

最重要的是,您必须确认服务器正在寻找什么。不要猜测,而是查看服务器的源代码或文档或与开发人员交谈。但是您的客户端代码示例不太可能正常工作。