我想使用AFNetworking的HTTP Post方法與一些參數和兩個值具有相同的參數。我試過了:AFHTTPClient requestWith方法ParameterEncoding
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSDictionary *params = [NSDictionarydictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", @"value3", @"param3", @"value4", @"param3", nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/index.php" parameters:params];
我使用了Charles Proxy,並發現我的請求中缺少了value4。
然後我嘗試:
NSString *parameter = @"param1=value1¶m2=value2¶m3=value3¶m3=value4";
[request setHTTPBody:[parameter dataUsingEncoding:NSUTF8StringEncoding]];
而且這個工作。
現在我想知道如果我在AFNetworking上做錯了什麼,或者這是AFNetworking的錯誤嗎?
當然。我沒有想到,但很明顯。 - (NSMutableURLRequest *)requestWithMethod:(NSString *)方法 path:(NSString *)路徑 參數:(NSDictionary *)parameters'需要一個NSDictionary。有沒有辦法用NSDictionary生成上面提到的參數字符串? – 2012-07-08 16:19:46
@KaiOe不,沒有辦法以這種方式重複輸入密鑰。如果你需要這樣做,或者手動構建和設置POST體(就像你之前做的那樣),或者如果參數需要一個數組(它可能應該,因爲你定義了多個值),將它們編碼到一個數組中參數字典。 – mattt 2012-07-09 14:31:10
是的,參數需要一個數組。這很有效:'NSArray * xjxargs = [NSArray arrayWithObjects:@「value3」,@「value4」,nil]; NSDictionary * params = [NSDictionary dictionaryWithObjectsAndKeys:xjxargs,@「param3」];'非常感謝! – 2012-07-09 18:50:52