web-dev-qa-db-ja.com

AFHTTPClientから失敗ブロックのhttpステータスコードを取得する簡単な方法はありますか?

修正可能なhttpステータスコードのリストがありますが、失敗ブロックでhttpステータスコードを取得できればよりきれいになると思います。

OK、操作オブジェクトで答えを見つけました

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
        NSLog(@"error code %d",[operation.response statusCode]);
}];
93
MonkeyBonkey

OK、操作オブジェクトで答えを見つけました

failure:^(AFHTTPRequestOperation *operation, NSError *error){ 
       NSLog(@"error code %d",[operation.response statusCode]);
}];
136
MonkeyBonkey

AFNetworkingの新しいバージョンでは、エラーから応答オブジェクトを取得できます。

[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]

これは、エラー処理を行のさらに上で行っており、応答オブジェクトを迂回させたくない場合に便利です。

110
Sam

AFNetworking 3.0の場合、使用

failure:^(NSURLSessionTask *operation, NSError *error) {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
    httpResponse.statusCode;
    NSLog(@"status code: %li", (long)httpResponse.statusCode);
}
17
swapnilagarwal

NSInteger operationStatusCode = [operation.error code];

NSInteger httpStatusCode = operation.response.statusCode;

リクエストがキャンセル/到達不能/タイムアウトになった場合、httpStatusCodeは常に0

または、operationStatusCodeを理解することで問題を特定できます。これはNSErrorオブジェクトです。

  • リクエストを処理できない/タイムアウト/ネットワークがない場合、operationStatusCode-1009
  • 操作キューをキャンセルすると、operationStatusCode-999

Appleのドキュメント で、他のすべてのNSErrorコードとその説明を確認できます。

13
c0deslayer

Swift 3:でステータスコードを取得できました

((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
    as! HTTPURLResponse).statusCode
5
hasan

それは私のために働いていますあなたのリクエストに以下の行を追加してください

manager.requestSerializer = [AFJSONRequestSerializerシリアライザー];

0
user859952