3

我正在从 ASIHTTPRequest 迁移到 AFNetworking 并遇到了问题。

我正在尝试使用超载 post 参数的请求来访问 API。我以前为此使用 ASIFormDataRequest 并使用此代码同时更新 3 个 ID。

// ASIHTTPRequestCode
[request addPostValue:@"value1" forKey:@"id"];
[request addPostValue:@"value2" forKey:@"id"];
[request addPostValue:@"value3" forKey:@"id"];

由于 AFNetworking 使用 NSDictionary 来存储键值对,因此如何做到这一点似乎并不简单。有任何想法吗?

4

3 回答 3

1

我无法立即看到使用 AFNetworking 执行此操作的直接方法,但可以这样做。

如果您查看 的代码AFHTTPClient requestWithMethod,您会看到这一行,它设置了请求正文以包含参数:

 [request setHTTPBody:[AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding) dataUsingEncoding:self.stringEncoding]];

基本上你可以将一个空字典传递requestWithMethod给参数,然后它返回,调用request setHTTPBody你自己,以类似于它的方式自己组成查询字符串AFQueryStringFromParametersWithEncoding

于 2012-03-15T19:36:12.663 回答
0

我遇到了类似的问题,但通过更新网址解决了这个问题。我添加了我需要与 url 一起发送的参数并将“参数设置为 nil”

所以网址变成了类似

server\url.htm?data=param1&data=param2&data=param3

并发送 nil 作为 paramDictionary

[request setHTTPBody:[AFQueryStringFromParametersWithEncoding(nil, self.stringEncoding) dataUsingEncoding:self.stringEncoding]];
于 2012-11-14T14:18:19.757 回答
0

您可以通过以下方式构建请求:

NSURL *url = [NSURL URLWithString:@"http://www.mydomain.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

NSDictionary *postValues = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%@,%@,%@",@"value1",@"value2",@"value3"] forKey:@"id"];

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/path/to/your/page.php" postValues];
于 2012-03-15T06:04:01.743 回答