0

POST を使用して、json 形式のデータを Web サービスに送信しようとしています。私のサーバーには、json 文字列を受け取って出力する php ページがあります。

問題は、受信した POST 配列が空であることです。以下は、アプリケーションのコードです。

NSString *jsonRequest = @"{\"username\":\"james\",\"password\":\"james1234\"}";
NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];
NSURL *url = [NSURL URLWithString:[[NSString alloc] initWithFormat:@"http://mydomain.com/check.php"]];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

[request setHTTPMethod:@"POST"];
[request setHTTPBody:requestData];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d",[requestData length]] forHTTPHeaderField:@"Content-Length"];

[NSURLConnection connectionWithRequest:[request autorelease] delegate:self];

check.php には次のコードがあります。

<?php

    print_r($_POST);
?>

次の出力が得られます: Array( )

私はすべてを試しましたが、Web サービスに送信された json 文字列を取得できないようです。確かに、何かが足りないのですが、それが何であるかはわかりません。

4

1 に答える 1

2

私はそれを機能させました、私はASIHTTPライブラリを使わなければなりませんでした。以下はコードです:

NSURL *url = [NSURL URLWithString:[[NSString alloc] initWithFormat:@"http://mydomain.com/check.php"]];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request setPostValue:@"james" forKey:@"username"];
[request setPostValue:@"james1234" forKey:@"password"];
[request startAsynchronous];
于 2011-11-28T17:32:39.220 に答える