我是iOS开发的新手。我尝试将POST JSON发送到我的RoR服务器。 这是我的代码:
params - some NSDictionary - > {uid = 123}
NSData *postData = [NSJSONSerialization dataWithJSONObject:params
options:NSJSONWritingPrettyPrinted error:&jsonSerializationError];
NSString *urlString = [[NSString alloc] initWithFormat:@"%@%@", API_URL, url];
NSURL *nsUrl = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:nsUrl];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%lu",
(unsigned long)postData.length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
在服务器的最后,我看到:
{"uid"=>"123",
"action"=>"mAction",
"controller"=>"mController",
"token"=>{"uid"=>"123"}}
为什么我会看到额外的令牌'以及我如何删除它?
答案 0 :(得分:0)
没有理由我可以看到额外的"令牌"在那里,所以我建议令牌一直在 param 中,或者服务器上的接收脚本(PHP?)正在添加数据。
我建议你用
打印参数的内容NSLog(@"param: %@", param);
只是为了确定,并将postData转换为NSString,例如:
NSString *myString = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
并打印出来,只是为了安全起见,一旦你确定你没有发送"令牌"参数,开始调试接收端。
希望这有帮助
答案 1 :(得分:0)
NSDictionary
是一个神奇的问题。当我发送NSMutableString
时 - 没问题。
NSMutableString *stringData = [[NSMutableString alloc] init];
[params enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
[stringData appendString:[NSString stringWithFormat:@"%@=%@", key, value]];
[stringData appendString:[NSString stringWithFormat:@"&"]];
}];
NSData *postData = [stringData dataUsingEncoding:NSUTF8StringEncoding];
我不知道会发生什么以及为什么:(