JSON发布请求错误

时间:2011-07-07 11:54:17

标签: objective-c json ios4

我正在尝试使用JSON从字典中的注册页面发送用户详细信息,但它显示错误“请求没有数据”。我该如何解决这个问题?

以下是代码:

NSString *jsonString = [dicRegister JSONRepresentation];
NSData *jsonData = [NSData data];
jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableString *string1 = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonData: %@", string1);

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.xyz.com/phpFile/methodName/"]];
NSMutableData *requestData = [[NSMutableData alloc] initWithBytes:[jsonString UTF8String] length:[jsonString length]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"json" forHTTPHeaderField:@"Data-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];

NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];

NSLog(@"returnData: %@", returnString);

2 个答案:

答案 0 :(得分:1)

如果问题不在服务器上,则可能是您向Web服务发送了不正确的长度。由于您使用的是[jsonString UTF8String],因此您还应该使用[jsonString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]。文档说长度返回unicode字符的数量。

示例:

NSString *sample = @"El Niño";
NSLog(@"length: %d utf8length: %d",[sample length], [sample lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);

产生输出

length: 7 utf8length: 8

原因是 - 需要2个UTF8字符来代表它。

答案 1 :(得分:1)

这里的代码没问题...服务器端的php方法有错误....任何方式都超过你的帮助。 :)