Iphone can';t将postString发送到json
我使用json框架发送jsonstring。我的json post字符串是Iphone can';t将postString发送到json,iphone,objective-c,json,Iphone,Objective C,Json,我使用json框架发送jsonstring。我的json post字符串是 { "firstName": "string1", "lastName": "string2", "contactSource": "Leter", "permanentAddress": {}, "deliveryAddress": {}, "preferredContactTimes": [] } 我的编码 NSString *postString = [NSStri
{
"firstName": "string1",
"lastName": "string2",
"contactSource": "Leter",
"permanentAddress": {},
"deliveryAddress": {},
"preferredContactTimes": []
}
我的编码
NSString *postString = [NSString stringWithFormat:@"[\"firstName\":\"barani\",\"lastName\":\"Tharn\",\"contactSource\":\"Leter\",\"permanentAddress\":{},\"deliveryAddress\":{},\"preferredContactTimes\":[]]",fName.text,lName.text,contactSource.text,address,address,add];
NSURL *purchaseURL = [NSURL URLWithString:@"http://localhost/Cali/addContact"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:purchaseURL];
NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:requestData];//[postString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"post String :%@",[[NSString alloc] initWithData:requestData encoding:NSASCIIStringEncoding]);
NSURLConnection *purchaseConn =[[NSURLConnection alloc]
initWithRequest:request
delegate:self];
if (purchaseConn) {
NSLog(@"connection!!!");
webData = [[NSMutableData data] retain];
}
关于这件事,我确实完成了装货
NSString *jsonString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
NSLog(@"hai:%@",[[NSString alloc] initWithData:webData encoding:NSASCIIStringEncoding]);
NSDictionary *jsonValue = [jsonString JSONString];
NSLog(@"output:%@",jsonValue);
这里的permanentAddress
和deliveryAddress
也是一个子json字符串和一个preferredContactTimes数组
我得到了json失败的错误
JSONValue失败。错误跟踪是:(
“Error Domain=org.brautaset.JSON.ErrorDomain Code=11\“字符串意外结束\”UserInfo=0x4c8d820{NSLocalizedDescription=字符串意外结束}”
)
请给我解决方案不确定这是否导致您的问题,但这是可能的,特别是如果您的姓名和其他文本字段包含非ASCII字符。您创建的NSData如下所示:
NSData *requestData = [NSData dataWithBytes:[postString UTF8String] length:[postString length]];
[postString UTFString]将把字符串转换成以零结尾的字节缓冲区。如果该字符串中有任何非ASCII字符,则该缓冲区的长度将大于字符数。因此,如果字符串中的字符数为10,那么字节数将至少为11(nil终止符为一个字节),并且可能更长
然后告诉NSData缓冲区的长度等于字符串的长度。所以,若[postString UTF8String]的结果更长,那个么您可能会得到一个被截断的缓冲区,并将其用于解析
尝试这样做:
NSData *requestData = [postString dataUsingEncoding:NSUTF8StringEncoding]
多亏了我找到了问题发生的地方。。。。我和web服务开发人员讨论过。他说我发送的格式是正确的。但在服务器端,它会自动创建垃圾值,因为它们会创建映射。所以他们为我创建了一个新的,现在工作很好
谢谢json的格式是正确的。您应该确保正确使用您选择的json框架。如果您真的需要支持,请提供更多详细信息。