将请求正文休息到CURLOPT_POSTFIELDS

时间:2017-07-12 14:42:32

标签: php postman

我试图将请求正文传递给卷曲调用而且我被卡住了。

我在drupal工作流规则中我已经为需要将服务作为键值对调用的body参数定义了一个数据字段。$ 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的格式?

2 个答案:

答案 0 :(得分:1)

我宁愿使用数组,然后使用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'];

答案 1 :(得分:0)

只需使用数组:

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