2012-02-24 11 views
2

requestFailed/requestFinished関数から要求とともに送信された(POST)データにアクセスする方法。あなたはこれを試みることができるアクセス要求データは、requestFailed関数内で送信されます。ASIHttpRequest

- (void) abc { 
    NSString *postString = @"john"; 
    NSURL *url = [NSURL URLWithString:@"http://abc.com"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setPostValue:postString forKey:@"name"]; 
    [request setDelegate:self]; 
    [request startAsynchronus]; 
} 
- (void) requestFinished:(ASIHTTPRequest *)request 
{ 
    // Question is whether the request holds the sent post values. 
    // If it holds. how can we access them. 
    // i tried using [request valueForKey:@"name"]; 
    // but it won't work. 
} 

答えて

0

Handling success and failure for multiple requests in delegate methods

If you need to handle success and failure on many different types of request, you have several options:

If your requests are all of the same broad type, but you want to distinguish between them, you can set the userInfo NSDictionary property of each request with your own custom data that you can read in your finished/failed delegate methods. For simpler cases, you can set the request’s tag property instead. Both of these properties are for your own use, and are not sent to the server.

If you need to handle success and failure in a completely different way for each request, set a different setDidFinishSelector/setDidFailSelector for each request For more complex situations, or where you want to parse the response in the background, create a minimal subclass of ASIHTTPRequest for each type of request, and override requestFinished: and failWithError:.

これにより、さまざまなリクエストを処理するのに適したソリューションが提供されました。

+0

ええ、ASIHTTPREQUESTドキュメントからそれを得ました..とにかく情報のおかげで。 – divein

0

-

- (void)requestFinished:(ASIHTTPRequest *)request { 
    NSLog(@"Response %d ==> %@", request.responseStatusCode, [request responseString]); 
} 

あなたが選択した場合は、他の方法を扱うことができる、といった:

- (void)requestStarted:(ASIHTTPRequest *)request; 
- (void)requestFailed:(ASIHTTPRequest *)request; 

ドキュメントはhttp://allseeing-i.com/ASIHTTPRequest/に位置し、素晴らしいですされています。

+0

はい。私はresponseStringにアクセスすることができます..問題は、私は応答を処理しているどのような要求のためのmakeoutできませんでした..要求パラメータは、b/w要求を差別化..私は要求パラメータにアクセスする必要があります).. – divein

0

あなたはASIFormDataRequestにあなたの要求をキャストすることができます。

if ([request isKindOfClass:[ASIFormDataRequest class]]) { 
    ASIFormDataRequest *requestWithPostDatas = (ASIFormDataRequest *)request; 
    NSArray *myPostData = [requestWithPostDatas getPostData]; 
} 

ます。またASIFormDataRequestで「getPostData」公共の機能を持つ「POSTDATA」はアクセスできるようにする必要があります。

関連する問題