Drupal 8 Guzzle格式查询字符串

时间:2016-09-02 13:25:49

标签: post guzzle drupal-8

原谅我的无知,这是我第一次尝试Drupal 8而且我不是一个优秀的php开发人员。但我一直在阅读和搜索几个小时。我正在尝试使用新的Guzzle来替换drupal_http_request()。我使用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

任何方向或提示都会非常感激。

2 个答案:

答案 0 :(得分:0)

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

使用带有GET参数的$client->get$client->requestGuzzle documentation中的更多信息和示例。

答案 1 :(得分:0)

感谢回复人员。通过更改帖子中的一些内容,我能够正常工作。首先更改客户端 - >将发布到请求(' POST',XXX),然后将"查询" 更改为& #34; form_params" as " 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();