且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

NSURLRequest - 编码NSURLRequest的URL url POST Body(iPhone objective-C)

更新时间:2023-02-23 12:45:45

请考虑使用Ben Copsey的 ASIHTTPRequest 框架用于生成和发送同步和异步HTTTP请求/ p>

  ASIFormDataRequest * request = [[[ASIFormDataRequest alloc] initWithURL:@http://someSite.com] autorelease]; 
[request setPostValue:@myValue1forKey:@myFormField1];
[request setPostValue:@myValue2forKey:@myFormField2];
//等
[request start];
NSError * error = [request error];
if(!error)
NSString * response = [request responseString];

他的框架是一个巨大的节省时间。


I am sending a post using NSURLRequest.

NSURL *url = [NSURL URLWithString:someUrlString];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [parameterString length]];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [parameterString dataUsingEncoding:NSUTF8StringEncoding]];

Within the body of the Request I am encoding the following NVP:

returnURL=http://someSite.com

The post is going through successfully, but I get an error back. The error states an invalid url.

So, I changed it to:

returnURL=http:%2F%2FsomeSite.com

With the same error.

I have also double checked it with Todd Ditchendorf's HTTP Client, with the same results.

I know I must be encoding this wrong can someone tell me what I am doing wrong?

Thanks Corey

**UPDATE: Thanks to those who answered. I missed an ampersand in my NVP values. So of course, as soon as I fixed it, everything was fine. What I suspectede, the encoding of a url in the body of the post was incorrect. I am not using the ASIHTTPRequest framework, but it did help me troubleshoot the problem (overkill for what I needed). **

Consider using Ben Copsey's ASIHTTPRequest framework for generating and sending synchronous and asynchronous HTTTP requests (POST and GET):

ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:@"http://someSite.com"] autorelease];
[request setPostValue:@"myValue1" forKey:@"myFormField1"];
[request setPostValue:@"myValue2" forKey:@"myFormField2"];
// etc.
[request start];
NSError *error = [request error];
if (!error)
  NSString *response = [request responseString];

His framework is a huge time-saver.