原谅我的无知,这是我第一次尝试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¬ice_date=12/12/12&effective_date=12/12/12
任何方向或提示都会非常感激。
答案 0 :(得分:0)
使用$client->post
将发送POST请求。通过查看您直接测试的URL,您需要GET请求。
使用带有GET参数的$client->get
或$client->request
。 Guzzle 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();