将来自NSURLResponse的JSON编码数组作为NSData放入NSArray

时间:2010-10-02 17:33:00

标签: objective-c json ios

我无法让这个工作:

NSString *post = [NSString stringWithFormat:@"userudid=%@", [udid stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSLog(@"%@",post);
NSData *postData = [NSData dataWithBytes:[post UTF8String] length:[post length]]; 
//[udid dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

NSLog(@"%@",postData);
//NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.myserver.com/myapp/readtags2.php"]];
[request setURL:url];
[request setHTTPMethod:@"POST"];
//[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *error;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request 
    returningResponse:&response error:&error];

NSString *content = [NSString stringWithUTF8String:[urlData bytes]];
NSLog(@"responseData: %@", content);

POST是否正确形成?因为我可以从手动html表单发布到同一个php文件,但是从iOS上做这件事我什么也得不到

1 个答案:

答案 0 :(得分:1)

您可以更轻松地使用ASIHTTPRequest进行HTTP POST。

使用ASIHTTPRequest的表单发布在标题为“使用ASIFormDataRequest发送表单POST”一节中进行了解释:http://allseeing-i.com/ASIHTTPRequest/How-to-use

否则,请查看NSURLResponse,查看响应代码,看看iOS是否认为POST成功。

您可以用来检查的其他内容是wireshark之​​类的工具,用于比较从基于Web的表单POST到iOS POST流量的网络流量。 看起来就像你做得对,但最好的方法就是像wireshark一样。