如何在DidFinishSelector方法中获取ASIFormDataRequest的post值?

时间:2012-02-23 21:16:06

标签: objective-c ios asihttprequest

Objective-C / iOS新手在这里......

给出以下部分代码......

...
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:myUrl];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(callComplete:)];
    [request setPostValue:@"Dilbert" forKey:@"name"];
...

...和...

- (void) callComplete:(ASIFormDataRequest*)request {
    // ? Determine what the value of the name parm was ?
}

...我怎样才能在 callComplete 处理程序中获取名称帖子参数的值?

我原本以为会有类似[request postValueForKey :]的方法,但是没有。因此,除非有人知道这样做的方法,否则我想我只需要以ivars的形式或者在请求中使用userInfo复制数据。

3 个答案:

答案 0 :(得分:0)

你可以在类中编写自己的方法来返回你想要的东西,但是和你一样 - 我没有看到内置的方法来做到这一点。

一个注意事项 - 不再开发ASIHttpRequest(使用起来快速简便)。该框架并非所有帐户都不符合ARC标准。您可能希望改为使用另一个框架(CF-Networking或类似的东西)。

答案 1 :(得分:0)

我没有尝试过,但这可能有效:

- (void) callComplete:(ASIFormDataRequest*)request {

    NSString *name;
    for (NSDictionary *parameter in [request postData]) {
        if ([[parameter objectForKey:@"key"] isEqualToString:@"name"]) {
            name = [parameter objectForKey:@"value"];
            break;
        }
    }
}

答案 2 :(得分:0)

尝试这样:

- (void) callComplete:(ASIFormDataRequest*)request {  

     NSMutableData *postBody=[request postBody]; 

     NSString *stringPostBody = [[NSString alloc] initWithData:postBody   

     encoding:NSUTF8StringEncoding];
}