web-dev-qa-db-ja.com

POST NSURLRequestにデータを追加します

既存のPOSTNSURLRequestにデータを追加するにはどうすればよいですか?新しいパラメーターuserId=2323を追加する必要があります。

82
Tim

サードパーティのクラスを使用したくない場合は、投稿本文の設定方法を以下に示します...

NSURL *aUrl = [NSURL URLWithString:@"http://www.Apple.com/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                         cachePolicy:NSURLRequestUseProtocolCachePolicy
                                     timeoutInterval:60.0];

[request setHTTPMethod:@"POST"];
NSString *postString = @"company=Locassa&quality=AWESOME!";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request 
                                                             delegate:self];

キーと値のペアを投稿文字列に追加するだけです

190
Simon Lee

NSMutableURLRequestへのすべての変更は、NSURLConnectionを呼び出す前に行う必要があります。

上記のコードをコピーして貼り付けてTCPMonを実行すると、この問題が発生し、要求がGETではなくPOSTであることがわかります。

NSURL *aUrl = [NSURL URLWithString:@"http://www.Apple.com/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                     cachePolicy:NSURLRequestUseProtocolCachePolicy
                                 timeoutInterval:60.0];


[request setHTTPMethod:@"POST"];
NSString *postString = @"company=Locassa&quality=AWESOME!";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request 
                                                         delegate:self];
16
Kevin
 NSURL *url= [NSURL URLWithString:@"https://www.Paypal.com/cgi-bin/webscr"];
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                                        cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                    timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
 NSString *postString = @"userId=2323";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
8
Alex Terente

上記のサンプルコードは本当に役に立ちました(上記で示唆したように)、NSMutableURLRequestではなくNSURLRequestを使用する必要があると思います。現在の形式では、setHTTPMethod呼び出しに応答することができませんでした。タイプを変更すると、問題が直ります。

8
David Fulton

Swiftソリューションを探している人

let url = NSURL(string: "http://www.Apple.com/")
let request = NSMutableURLRequest(URL: url!)
request.HTTPBody = "company=Locassa&quality=AWESOME!".dataUsingEncoding(NSUTF8StringEncoding)
1
spaceMonkey