我正在从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来存储键值对,因此如何做到这一点似乎并不简单。有什么想法吗?
答案 0 :(得分:1)
我无法立即看到使用AFNetworking直接做到这一点的方法,但有可能做到这一点。
如果你查看AFHTTPClient requestWithMethod
的代码,你会看到这一行,它是设置请求体以包含参数的那一行:
[request setHTTPBody:[AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding) dataUsingEncoding:self.stringEncoding]];
基本上你可以将一个空字典传递给requestWithMethod
参数,然后它返回,自己调用request setHTTPBody
,以与AFQueryStringFromParametersWithEncoding
类似的方式自己编写查询字符串做到了。
答案 1 :(得分: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];
答案 2 :(得分:0)
我遇到了类似的问题但通过更新网址解决了这个问题。我添加了我需要使用url发送的参数并将“参数设置为nil”
所以网址变成了
server\url.htm?data=param1&data=param2&data=param3
并发送nil作为paramDictionary
[request setHTTPBody:[AFQueryStringFromParametersWithEncoding(nil, self.stringEncoding) dataUsingEncoding:self.stringEncoding]];