2012-07-08 2 views
2

일부 매개 변수와 함께 HTTP Post 메서드에 AFNetworking을 사용하고 두 값에 동일한 매개 변수가 필요합니다. 나는 시도했다 :AFHTTPClient requestWithMethod 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]; 

나는 찰스 프록시를 사용했고 값 4가 내 요청에 누락되었다는 것을 알아 냈다.

그때 나는 시도 :

NSString *parameter = @"param1=value1&param2=value2&param3=value3&param3=value4"; 
[request setHTTPBody:[parameter dataUsingEncoding:NSUTF8StringEncoding]]; 

그리고 이것은했다.

이제 AFNetworking에 문제가 있는지 또는 AFNetworking의 버그인지 알고 싶습니다.

답변

3

귀하의 문제는 AFNetworking으로 만있는 NSDictionary로하지 않습니다. 동일한 키로 두 개의 항목을 가질 수 없습니다.

이 경우는 의미

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", @"value3", @"param3", @"value4", @"param3", nil]; 

교체되어야하는 하나의 키에 대한 두 값을 결합

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", @"value3,value4", @"param3", nil]; 
다음

.

하나의 키에서 인수를 조합하는 또 다른 방법은 NSArray를 사용하는 것입니다. 예 :

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", [NSArray arrayWithObjects:@"value3",@"value4",nil], @"param3", nil]; 
+0

물론. 나는 그것에 대해 생각하지 않았지만 그것은 명백합니다. '- (NSMutableURLRequest *) requestWithMethod : (NSString *) method 경로 : (NSString *) 경로 매개 변수 : (NSDictionary *) parameters'는 NSDictionary가 필요합니다. NSDictionary와 함께 위에서 언급 한 매개 변수 문자열을 생성하는 방법이 있습니까? –

+1

@KaiOe 아니요, 이런 식으로 키에 대한 중복 항목을 가질 방법이 없습니다. 필요한 경우 POST 몸체를 수동으로 빌드하고 설정하거나 (여러 번 값을 정의했기 때문에) 매개 변수가 배열을 필요로하는 경우이를 배열에 인코딩합니다. 매개 변수 사전 – mattt

+1

예, 매개 변수에는 배열이 필요합니다. 이것은 잘 작동합니다 :'NSArray * xjxargs = [NSArray arrayWithObjects : @ "value3", @ "value4", nil]; NSDictionary * params = [NSDictionary dictionaryWithObjectsAndKeys : xjxargs, @ "param3"];'대단히 감사합니다! –

0

Typo, 마지막 키 값으로 param3이 아닌 param4를 사용하십시오.

NSDictionary *params = [NSDictionarydictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", @"value3", @"param3", @"value4", @"param3", nil] 

수정 한

NSDictionary *params = [NSDictionarydictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", @"value3", @"param3", @"value4", @"param4", nil] 
+0

이것은 오타가 아닙니다. param3을 배열로 사용하기 때문에 value3과 value4에 param3을 사용하고 싶습니다. 이 게시물을 봐 : http://stackoverflow.com/questions/177815/post-multiple-parameters –

관련 문제