1

ASIHttpRequestライブラリを使用して並列非同期Web呼び出しを行っています。これが実際のメソッドのコードスニペットです。

- (void)dataForURI:(NSString *)dataURI andTag:(NSString*)tag
{
NSLog(@"%d",_queue.requestsCount);
if (!_queue) {
    _queue = [ASINetworkQueue queue];
}
ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:dataURI]];
[request setTimeOutSeconds:30];
[request setDownloadProgressDelegate:self];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request setDidReceiveResponseHeadersSelector:@selector(requsestResponseHeaderReceived:)];
[request setShouldContinueWhenAppEntersBackground:YES];
[request setTag:[tag integerValue]];
[_queue addOperation:request];
[_queue go];
}

リクエストのrequest.responseStringプロパティを「NSLog」すると、コンソールに何も表示されません。Wiresharkを使用して、リンクが応答を送信しているかどうかを確認しましたが、適切な応答を送信しているようです。

'NSLog' responseHeadersを実行すると、適切な値が表示されます。そのためのコードスニペットは次のとおりです。

-(void)requestFinished:(ASIHTTPRequest *)request
{
NSLog(@"%@",request.responseString);
NSLog(@"%@",[[request responseHeaders] objectForKey:@"Content-Type"]);
[self imageHandlerDidDownloadData:request.responseData mimeType:[request.responseHeaders objectForKey:@"Content-Type"] forMediaID:[NSString stringWithFormat:@"%d", request.tag]];
}

また、このメソッドで応答データを取得しています(ただし、RequestFinished:メソッドでは取得していません):

-(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
{
NSLog(@"%@",data);
NSLog(@"%@", [[request responseHeaders] objectForKey:@"Content-Type"]);
}

適切な応答を得るのを手伝ってください...!!!

前もって感謝します。

4

1 に答える 1

1

私はそれを考え出した。ASIHttpRequestのデリゲートを設定する代わりに、_queueのデリゲートを設定する必要がありました。

使用する

[_queue setDelegate:self] worked out for me...
于 2012-10-15T21:20:09.273 に答える