【问题标题】:Drupal 8 Guzzle Format Query StringDrupal 8 Guzzle 格式查询字符串
【发布时间】:2017-01-10 15:21:52
【问题描述】:

原谅我的无知,这是我第一次尝试 Drupal 8,而且我一开始就不是一个好的 php 开发人员。但我一直在阅读和搜索几个小时。我正在尝试使用替换 drupal_http_request() 的新 Guzzle 来发帖。我已经使用 Curl 完成了这项工作,但似乎无法在这里朝着正确的方向发展。我只是没有“明白”。

这是我从自定义表单中提取数据的数组示例。我还尝试了一个自定义变量,我在其中构建了字符串。

$fields = array(
   "enroll_id" => $plan,
   "notice_date" => $date,
   "effective_date" => $date,
);

$client = \Drupal::httpClient();
$response = $client->post('myCustomURL', ['query' => $fields]);
$data = $response->getBody()->getContents();
try { 
drupal_set_message($data);
} catch (RequestException $e) {
watchdog_exception('MyCustomForm', $e->getMessage());
}

这确实在下面的 $data 中从我的 API 返回了 REJECTED 的结果 - 但它不会将 URL 附加到包含查询 => 数组中。我已经尝试了许多组合,只是将完全构建的 URL 放在帖子中(适用于我的 API - 已测试),我仍然从我的 API 收到相同的结果。最后我想要完成的是

https://myCustomURL?enroll_id=value&notice_date=12/12/12&effective_date=12/12/12

任何方向或提示将不胜感激。

【问题讨论】:

    标签: post guzzle drupal-8


    【解决方案1】:

    感谢大家的回复。通过更改帖子中的一些内容,我能够使其正常工作。首先将 client -> post 更改为 request('POST', XXX) 然后将 "query" 更改为 "form_params" 作为 "body" 已被弃用。

    http://docs.guzzlephp.org/en/latest/quickstart.html#query-string-parameters

    $client = \Drupal::httpClient();
    $response = $client->request('POST','https://myURL.html', ['form_params' => $fields]);
    $data = $response->getBody()->getContents();
    

    【讨论】:

    • 我必须将 $client->post 更改为 request('POST, XXX) 才能使其正常工作。
    【解决方案2】:

    使用$client->post 将发送一个 POST 请求。通过查看您直接测试的 URL,您需要一个 GET 请求。

    $client->get$client->request 与GET 参数一起使用。更多信息和示例请参见Guzzle documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多