2012-06-18 39 views
5

Tôi đang cố chuyển nhiều giá trị cho một khóa thông số cho yêu cầu HTTP bằng phương thức AFHTTPClient "postPath". Tuy nhiên, biến tham số là một NSDictionary vì vậy tôi không thể đặt nhiều giá trị cho "email" chính của mình. Tôi đã thử gửi các giá trị thư điện tử dưới dạng một chuỗi phân tách bằng dấu phẩy nhưng điều đó không hoạt động khi máy chủ của tôi trả về lỗi nói rằng tôi chưa chỉ định bất kỳ giá trị e-mail nào.AFNetworking - Cách chỉ định nhiều giá trị cho một khóa

Tôi đã đọc trong tài liệu về cách sử dụng phương thức multipartFormRequestWithMethod nhưng tôi không thể tìm ra cách thực hiện công việc này. Bất cứ ai có thể cung cấp một ví dụ về cách sử dụng phương pháp này với nhiều giá trị cho một khóa duy nhất?

Cảm ơn

Giàu

+0

Kể từ NSDictionary không cho phép các phím trùng lặp, điều này ngăn cản bạn thực hiện use-case cụ thể của bạn. Những gì bạn có thể làm là lấy NSMutableURLRequest được tạo trong phương pháp này và tự xây dựng chuỗi thân POST. –

Trả lời

2

Bạn không thể xác định nhiều giá trị cho khóa duy nhất. Tuy nhiên, bạn có thể xác định một khóa để có một mảng, chính nó chứa nhiều giá trị.

Điều đó nói rằng, có vẻ như không phải là email sẽ là trường cần có nhiều định nghĩa. Nếu bạn muốn chấp nhận nhiều giá trị, có lẽ bạn nên đổi tên tham số đó thành emails.

+0

Cảm ơn bạn đã phản hồi. Tôi đã thử đi qua một tham số email một NSArray nhưng máy chủ tương tự trả lời rằng tôi đã không được thông qua một địa chỉ e-mail. Bất kỳ ý tưởng? –

+0

Vì vậy, nó xuất hiện mã AFNetworking đang lấy chìa khóa của "email" và biến nó thành "email []" đó là lý do tại sao máy chủ không nhận ra một địa chỉ e-mail đã qua. Có cách nào để ngăn chặn điều này xảy ra không? –

+0

@RichMorey Đó là loại điểm: 'email []' là một quy ước được nhiều khung công tác như Rails sử dụng để biểu thị rằng nhiều giá trị đang được chuyển. Bạn đã viết API chưa? Nếu bạn đang nhận được một xác nhận như vậy, có vẻ như là máy chủ chỉ muốn một e-mail duy nhất. Tại sao không chỉ làm vậy? – mattt

4

Kết hợp nhiều giá trị cho một khóa.

sử dụng NSDictionary + NSArray

Ví dụ:

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 

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

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/yourhostpath" parameters:params]; 

bạn cần phải thay thế "url" và "yourhostpath" để riêng của bạn, xin vui lòng tham khảo AFHttpClient code demo của AFNetworking cho việc này.

12

Kết hợp nhiều giá trị truy vấn cho một khóa.

Nếu bạn sử dụng NSDictionary + NSSet bạn nhận được url truy vấn mà không có [] từ NSArray.

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
[NSSet setWithObjects:@"value1", @"value2", nil], @"myKey", nil]; 

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
NSURLRequest *request = [httpClient requestWithMethod:@"GET" path:@"/path" parameters:params]; 

PS: Muộn còn hơn không bao giờ ...

+0

Điều gì sẽ xảy ra nếu tôi muốn gửi nhiều thông số có cùng giá trị? Điều này '[NSSet setWithObjects: @" value1 ", @" value1 ", @" value2 ", @" value2 ", nil]' không hoạt động. – krotov

Các vấn đề liên quan