2012-05-14 8 views
0

CURLOPT_POSTFIELDSに配列を渡すと自動的にURLエンコーディングが行われると言われていますが、何らかの理由でそれができません。私は自分自身で文字列をエンコードしようとしましたが、ヘッダーには入りません。配列を渡すと、それはコード化されません。cURLはPHPの配列をエンコーディングしていないようです

$ch = curl_init(); 

      curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json', 'Content-Type: application/x-www-form-urlencoded")); 
      curl_setopt($ch, CURLOPT_URL, "http://localhost:8888/testrail/index.php?/miniapi/add_case/s2"); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $caseArgs);//$caseArgs is an array from another function 
      curl_setopt($ch, CURLOPT_POST, true); 

      curl_setopt($ch, CURLOPT_HEADER, 1); 




      curl_exec($ch); 

EDIT -----

Here is the array that I am working with: 

    /*Function to set the data for each individual test case*/ 
function setTestCase($cellValue){ 
      $case[]=array(); 
     $case['title'] = $cellValue[0]; 
     echo $case['title']. "<- Title"."<br/>"; 
     $case['type'] = $cellValue[1]; 
     echo $case['type']. "<- Type"."<br/>"; 
     $case['priority'] = $cellValue[2]; 
     echo $case['priority']. "<- Priority"."<br/>"; 


     /*$case['estimate'] = $cellValue[3]; 
     echo $case['estimate']. "<- Estimate"."<br/>"; 
     $case['milestone'] = $cellValue[4]; 
     echo $case['milestone']. "<- MileStone"."<br/>"; 
     $case['refs'] = $cellValue[5]; 
     echo $case['refs']. "<- Custom Refs"."<br/>"; 
     $case['precon'] = $cellValue[6]; 
     echo $case['precon']. "<- Custom Precondition"."<br/>"; 
     $case['steps'] = $cellValue[7]; 
     echo $case['steps']. "<- Custom Steps"."<br/>"; 
     $case['expectedresults'] = $cellValue[8]; 
     echo $case['expectedresults']. "<- Expected Results"."<br/>"; 
     $case['testSuite'] = $cellValue[9]; 
     echo $case['testSuite']. "<- TestSuite"."<br/>";*/ 


     $caseData=array(

      'Title'=> $case['title'], 
      'Type'=> $case['type'], 
      'Priority'=> $case['priority'], 
      'key'=> "246810", 


     ); 

     return $caseData; 

}

+0

あなたの配列は何ですか?サンプルを見ることはできますか?それは、通常のフォーム投稿フィールドが名前/値と同じ方法でキー/値である必要があります:$ caseArgs ['fname'] = 'john'; $ caseArgs ['lname'] = 'smith'; – RiquezJP

+0

cURLは多次元配列をエンコードしません。送信しようとしているデータを表示できますか? – radmen

+0

@RiquezJP - 私が使用している配列を添付しました。ご協力いただきありがとうございます。 – BlackHatSamurai

答えて

1

http_build_query 多次元 アレイ上のURLエンコードを行います。

は、ここに私のコードです。

編集:申し訳ありません。誰かが上記の多次元配列を言いました。私はちょうどそれを頭の中に入れました。

あなたは間違いがあります。$case[] = array(); この行は、$case配列の最初の要素に新しい配列を配置しています。ただそれに変更してください:$case = array();

+0

多次元配列がありません – BlackHatSamurai

+0

申し訳ありません、私の間違いです。私は私の答えを編集しました。 –

関連する問題