2014-03-26 21 views
3

我發送一個字典'childDetails',它有一個字典(獎勵)作爲它的一個對象。AFNetworking - 使用字典時請求格式不正確

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager POST:url parameters:childDetails constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 

這種「獎勵」字典有兩個密鑰「名」和「價值」,它看起來像{@"name",@"Reward 1",@"value",@"10"}

當它發佈到服務器時,服務器收到它如下;

Array 
(
    [group_id] => 5 
    [name] => John Doe 
    [rewards] => Array 
     (
      [0] => Array 
       (
        [name] => Sample reward 2 
       ) 

      [1] => Array 
       (
        [value] => 50 
       ) 

      [2] => Array 
       (
        [name] => Sample Reward 1 
       ) 

      [3] => Array 
       (
        [value] => 10 
       ) 

     ) 

    [tasks] => Array 
     (
      [0] => Array 
       (
        [title] => Default task one 
       ) 

      [1] => Array 
       (
        [title] => Default task two 
       ) 

      [2] => Array 
       (
        [title] => Default task five 
       ) 

     ) 

    [token] => 5332884c2bc8c5 
) 

任何想法如何解決這個問題?

任何幫助,非常感謝。

在此先感謝

回答

0

答案是,你必須重新格式化你的字典 在我而言,我不得不爲改變它;

NSDictionary *parameters = @{@"rewards": @[{@"reward name",@"reward value"}, {@"reward name",@"reward value"}]}; 
0

我覺得「參數:POST的PARAM:只接受鍵/值對你確定你不需要手動序列化你的對象首先 你能打印的內容? ?「childDetails」請

+0

兒童細節字典看起來像這樣 { 「group_id」= 5; name =「John Doe」; 獎勵=( { 名稱= 「樣品獎勵2」; 值= 50;} , { 名稱= 「樣品獎勵1」; 值= 10;} ); 任務=( { 標題= 「默認任務的一個」; },{ 標題 = 「默認任務兩個」; },{ 標題 = 「默認任務五」 } ); token = 5332884c2bc8c5; } –

+0

好的我不明白。如果你在服務器端需要相同的對象,最好的方法是自己序列化對象。使用JSON格式序列化獎勵項目(NSJSONSerialization),並將JSON字符串放入獎勵屬性中。在服務器端(你似乎使用PHP作爲服務器語言),你有json_decode函數可以正確地反序列化你的字符串。不要忘記對通過URL傳輸的JSON字符串進行編碼/解碼。 –

+0

我現在已經解決了這個問題。我想知道是否有其他正確的方法 –