web-dev-qa-db-ja.com

iphoneアプリケーションからPOSTまたはGETリクエストを行うことはできますか?

IPhone SDKを使用して、HTTP POSTまたはGETメソッドと同じ結果を得る方法はありますか?

26
1234

クラスにresponseDataインスタンス変数があるとすると、次のようになります。

responseData = [[NSMutableData data] retain];

NSURLRequest *request =
    [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

次に、次のメソッドをクラスに追加します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    // Show error
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // Once this method is invoked, "responseData" contains the complete result
}

これにより、GETが送信されます。最終メソッドが呼び出されるまでに、responseDataにはHTTP応答全体が含まれます([[NSString alloc] initWithData:encoding:]を使用して文字列に変換します。

または、POSTの場合、コードの最初のブロックを次のように置き換えます。

NSMutableURLRequest *request =
        [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]];
[request setHTTPMethod:@"POST"];

NSString *postString = @"Some post string";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
45
Matt Gallagher

Objective Cを使用している場合は、NSURL、NSURLRequest、およびNURLConnectionクラスを使用する必要があります。 AppleのNSURLRequestドキュメント 。 HttpRequestはJavaScript用です。

8
Ben Gottlieb