3

AFNetworking を使用して、モバイル アプリから Rails サーバーへのパスワードのリセット要求を処理しています。

API が返されます: head :ok (結果は 200)

getPathただし、これにより、リクエストを発行したときに AFNetworking が失敗ブロックを実行します。

成功ブロックを実行するには、次の 2 つのことを実行できます。

  1. API を返すhead :no_content(結果は 204)
  2. Accept ヘッダーを「application/json」に設定しないでください

ステータス コードが 200 で Accept ヘッダーがapplication/json.

私はAPIを完全に制御できないので、コンテンツのない200でも成功ブロックをトリガーすることは可能ですか、それとも204は成功したが何も返されないこの正確な状況に使用されることになっていますか?サーバー?

ありがとう!

4

1 に答える 1

2

AFNetworkingの成功ブロックと完了ブロックを使用する代わりにAFHTTPRequestOperation、応答コードを自分で使用して処理することができます。例えば:

// Setup HTTP client
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://website.com"]];

// Create the request
NSURLRequest *request = [client requestWithMethod:@"GET" path:@"authenticate" parameters:params];

// Create an HTTP operation with your request
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

// Setup the completion block
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    switch (operation.response.statusCode) {
        case 200:
            // Do stuff
            break;
        default:
            break;
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    switch (operation.response.statusCode) {
        case 400:
            // Do stuff
            break;
        default:
            break;
    }
}];

// Begin your request
[operation start];
于 2012-11-12T20:11:21.790 に答える