1

サーバーが 401 を返す場合、ASIHTTPRequest の応答データとヘッダー フィールドは常に null です。

ASIAuthenticationErrorType に設定されているステータス コードと NSError コードしか読み取れません。Charles Web Proxy を使用してトラフィックを盗聴しています。サーバーが空でないレスポンスボディを返していることがはっきりとわかります。

authenticationNeededForRequest: デリゲートを実装して、応答データが null かどうかを確認してみました。ただし、このデリゲート メソッドは呼び出されません。

ネットワークキューを初期化するために使用しているコードは次のとおりです。

networkQueue = [[ASINetworkQueue alloc] init];
[networkQueue setDelegate:self];
[networkQueue setRequestDidFinishSelector:@selector(requestDidFinish:)];
[networkQueue setRequestDidFailSelector:@selector(requestDidFail:)];

そして、リクエストを送信するには

ASIHTTPRequest * request = [ASIHTTPRequest requestWithURL:apiURL];
request.delegate = self;
request.userInfo  = userInfo;
[request setRequestMethod:method];
[networkQueue addOperation:request];
[networkQueue go];

ありがとうございました!

4

2 に答える 2

1

どうやら、これは以前のバージョンの ASIHttpRequest のバグだったようです。現在のバージョンで修正する必要があります。

于 2011-07-28T20:48:50.390 に答える
0

デリゲート メソッドを実装している場合 -(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data

次に、responseData は null になります。API がデータ処理をアプリケーションに引き継ぐためです。

于 2014-08-19T07:12:26.237 に答える