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