2012-03-15 53 views
3

我正在從ASIHTTPRequest遷移到AFNetworking並遇到問題。AFNetworking過載過帳參數

我想用一個重載post參數的請求命中API。我以前使用ASIFormDataRequest進行此操作,並使用此代碼同時更新3個ID。

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

由於AFNetworking使用一個NSDictionary存儲鍵值對,它似乎並沒有直截了當如何做到這一點。有任何想法嗎?

回答

1

我不能馬上看到一個直接的方式與AFNetworking做到這一點,但它是可以做到的。

如果你看一下AFHTTPClient requestWithMethod的代碼,你會看到這條線,這是建立請求主體包含的參數之一:

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

基本上你可以傳遞一個空字典requestWithMethod爲參數,那麼它返回,自己調用request setHTTPBody,自己組成查詢字符串的方式與AFQueryStringFromParametersWithEncoding的方式類似。

+0

我希望能夠在沒有這條路線的情況下弄清楚這一點,但它似乎是目前唯一的方法。 – lavoy 2012-03-20 19:32:34

+0

我確信AFNetworking會喜歡收到一個補丁來增加更好的方法來實現這個功能:-) – JosephH 2012-03-20 19:51:55

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]; 
+0

所有按鍵爲了解決我的問題,必須保持一致。 – lavoy 2012-03-15 17:14:40

+0

對不起,現在我明白你的問題了。我使用其他可能嘗試的其他代碼更新了我的代碼。不知道它是否會起作用,我認爲這取決於你的服務器如何解釋請求。 – jonkroll 2012-03-15 17:59:32

0

我正面臨類似的問題,但通過更新url解決了它。我說我需要的URL發送的參數和設置「參數,以無」

使URL成爲像

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

和發送零作爲paramDictionary

[request setHTTPBody:[AFQueryStringFromParametersWithEncoding(nil, self.stringEncoding) dataUsingEncoding:self.stringEncoding]]; 
+0

url中的參數可以使用GET,但不能使用POST。 – lavoy 2012-11-14 18:18:46

+0

我們正在做Post僅適用於所有請求,並且它對我來說工作得很好 – 2012-11-15 06:55:18

+0

你用這個API打什麼API?我不相信它應該工作。 – lavoy 2012-11-15 18:27:07