2012-05-14 2 views
0

Я пытался отправить что-то через HTTP-запрос, используя CURLOPT POSTFIELDS, и данные, похоже, не передаются. Я что-то упускаю?CURLOPT POSTFIELDS не получает данные в HTTP-запрос

 function sendTestCase($caseArgs){ 
     try{ 
      $ch = curl_init(); 
      $sendData = http_build_query($caseArgs); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $sendData); 
      curl_setopt($ch, CURLOPT_URL, 'http://localhost:8888/testrail/index.php?/miniapi/add_case/'); 
      curl_setopt($ch, CURLOPT_HEADER, false); 
      curl_setopt($ch, CURLOPT_POST, 1); 

      curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect:")); 

      curl_exec($ch); 
     } 
     catch (HttpException $ex){ 
      echo $ex."<-Exception"; 
} 

curl_close($ch); 
    } 
+0

Какова ценность '$ caseArgs'? –

+0

Что такое caseargs и почему бы вам просто не передать его в виде массива? –

+0

Это массив. Мне нужно, чтобы он передавался как аргумент POST, потому что это то, что требует API. Кроме того, в аргументе post также должна быть кодировка URL-адреса ... Это было неприятно для меня, чтобы сказать меньше – BlackHatSamurai

ответ

1

POSTFIELDS отлично подходит для приема массива, и завиток сделает для вас создание ссылок. В настоящее время вы передаете строку для завивки (которая, как оказалось, содержит ваши значения формы), но не передает имя поля, поэтому curl отправляет открытую строку. Попробуйте это вместо:

curl_setopt($ch, CURLOPT_POSTFIELDS, $caseArgs); 
+0

Это сработало! Спасибо за помощь! – BlackHatSamurai