0

JSON 応答を取得しようとしているサーバーに API があります。いくつかの要求ツールを使用して呼び出しをシミュレートし、毎回正しいデータを取得しました。これが私のリクエスト設定です:

NSString *post = [NSString stringWithFormat:@"user_id=%@&last_sync=%@",user_id, last_sync];
NSURL *directoryURL = [NSURL URLWithString:directoryURI];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:directoryURL];

[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[NSData dataWithBytes:[post UTF8String] length:[post length]]];

シミュレートされたリクエストでも、コンテンツ タイプは同じです。エラーは返されず、コンテンツは返されません。

4

4 に答える 4

1

私は AFNetworking ライブラリを使用しています。これにより、HTTP 通信の負担が大幅に軽減されます。

私の POST 呼び出しは、以下の行に沿っています。

NSURL *nsURL = [NSURL URLWithString:@"http://someurl.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsURL];

[request setHTTPMethod:@"POST"];
[request addValue:@"xxxx" forHTTPHeaderField:@"yyy"]; // for any header params you want to pass in
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];

// If you need to pass any JSOn data to your WS
if (json != nil) [request setHTTPBody:json];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *returnedRequest, NSHTTPURLResponse *response, id JSON)
{
    ...
}
failure:^(NSURLRequest *returnedRequest, NSHTTPURLResponse *response, NSError *error, id JSON)
{
       ...
}];
于 2013-07-31T23:07:08.227 に答える
1

理解した。どうやら、シミュレーターとは異なり、NSMutableRequest は、POST 変数と URL 内のクエリ文字列変数の組み合わせを使用する場合を好みません。変数を POST 本体に移動すると、すべて正常に動作するようになりました。

于 2013-08-01T11:45:26.530 に答える
0

POST メソッドを使用している場合は、文字列を NSData 形式に変換する必要があります。

これが役立つことを願っています。

于 2013-07-31T20:24:38.003 に答える