2017-07-12 59 views
0

我正在嘗試將請求正文傳遞給curl調用,並且卡住了。休息請求正文CURLOPT_POSTFIELDS

我在Drupal的工作流程規則我已經定義了一個數據字段的身體參數,我需要調用一個服務爲鍵值pairs.The轉儲$ data變量看起來就像這樣......

artifact1=valueXYZ 
artifact2=value123 

我郵遞員輸出爲CURLOPT_POSTFIELDS是一個字符串

i.e.(------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\artifact1\r\n\r\nvalueXYZ\r\n) 

在PHP我怎麼artifact1=valueXYZ中供CURLOPT_POSTFIELDS的格式?

回答

0

只需使用一個數組:

$arr = array('art1' => 'value1','art2' => 'value2'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $arr); 
0

我寧願使用一個數組,然後用PHP http_build_query()功能:

 $array_values['artifact1'] = "valueXYZ"; 
     $array_values['artifact2'] = "value123"; 
     $fields = http_build_query($array_values); 
     $curl = curl_init(); 
     curl_setopt_array($curl, array(
      CURLOPT_URL => $url, 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_ENCODING => "", 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_TIMEOUT => 30, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
      CURLOPT_CUSTOMREQUEST => "POST", 
      CURLOPT_POSTFIELDS => $fields, 
      CURLOPT_HTTPHEADER => array(
      "cache-control: no-cache" 
     ), 
    )); 

     $response = curl_exec($curl); 
     $err = curl_error($curl); 

     curl_close($curl); 

然後您會收到你的價值觀是這樣的:

$artifact1 = $_POST['artifact1']; 
$artifact2 = $_POST['artifact2'];