2009-04-24 13 views
13

NSURLRequestを使用して投稿を送信しています。NSURLRequest - NSURLRequest POST Body(iPhone objective-C)のURLをエンコードする

にreturnurl = http://someSite.com

ポストが正常に通過しているが、私は戻ってエラーを取得:。私は、次のNVPをコードしていますリクエストのボディ内

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]]; 

エラーは無効なURLを示します。同じエラーで%2F%2FsomeSite.com

にreturnurl =のhttp:

だから、私はそれを変更しました。

私は同じ結果でTodd DitchendorfのHTTPクライアントでもそれをダブルチェックしました。

私はこの間違ったコードを誰かが私が間違っていることを教えてくれるはずですか?

おかげ コーリー

** UPDATE:答え人に 感謝します。私はNVP値でアンパサンドを見逃していました。もちろん、私がそれを修正するとすぐに、すべてがうまくいった。私が疑ったことは、投稿の本文にURLのエンコーディングが間違っていたことです。私はASIHTTPRequestフレームワークを使用していませんが、問題のトラブルシューティングに役立ちました**

答えて

15

は、同期および非同期のHTTTP要求を生成して送信するため、ベンCopseyのASIHTTPRequestフレームワークを使用することを検討してください(POSTと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]; 

彼のフレームワークでは、膨大な時間の節約です。

+1

ASIHttpRequestはすごく驚異的です! – bentford

4

これはあなたの問題を解決するかどうか私は知らないが、

[parameterString length] 

はUTF8バイトのさまざまな数字と文字をエンコードするため

[parameterString dataUsingEncoding:NSUTF8StringEncoding] 

の長さに等しいことが多いではありません。

関連する問題