如何获取wp_Remote_Get生成的查询字符串?

时间:2017-03-07 作者:Gazillion

我有一些非常基本的数据,我正在发布到一个专有的潜在客户捕获系统。每当我向他们的系统提交表单数据时,请求的正文就是一个错误500页。

我正试图与他们的开发人员一起调试这个问题,它显然不喜欢我的查询字符串中的某些内容,他希望能够在自己的端对其进行测试。

然而,我浏览了Google结果和WordPress codex,找不到一种方法来提取由以下内容生成的查询字符串:

$result=wp\\u remote\\u get(\'thirdparty.com\',数组(\'body\'=>数组(\'foo\'=>\'bar\'));

我希望查询字符串如下所示:

thirdparty.com?foo=bar
有人知道如何获取这个生成的URL/查询字符串吗?

3 个回复
SO网友:HU ist Sebastian

虽然其他答案很好地回答了您的问题(如何获取生成的url),但我会回答您真正想知道的问题(如何让它调用thirdparty.com?foo=bar with wp\\u remote\\u get)

答案是:用于传输url参数的$args数组不会像这样工作。如果必须使用wp\\u remote\\u POST传输POST请求,可以使用与示例类似的body参数。但是,要获得第三方wp\\u remote\\u。com?foo=bar,你只需

wp_remote_get(\'http://thirdparty.com?foo=bar\');
如果您想使用数组,还可以执行以下操作:

$url = "http://thirdparty.com";
$data = array(\'foo\' => \'bar\');
$query_url = $url.\'?\'.http_build_query($data);
$response = wp_remote_get($query_url);
快乐的编码!

SO网友:kraftner

你可以看看里面的课程wp-includes/class-http 处理实际请求的。有各种各样的钩子http_api_curl 您可以连接到以查看实际请求的内容。

SO网友:leymannx

这是的任务Xdebug. 我建议将其与PHPStorm一起使用。

然后,您需要在构建查询时或发布请求时准确地设置断点。然后你可以检查到底发生了什么。

下面是我用来成功发布内容的示例链,它生成的查询与下面的查询类似,然后将其附加到$url 在下面我发现设置查询格式很重要PHP_QUERY_RFC3986 使用PHPhttp_build_query() 所以它被正确地编码了。

查询:

foo=foovalue&bar=barvalue
完整样本:

// Build the URL query to be append to the POST request URL.
$data = [
  \'foo\' => $foo,
  \'bar\' => $bar,
];

$query = http_build_query($data, NULL, \'&\', PHP_QUERY_RFC3986);

// The POST request URL.
$url = \'https://example.com/index.php/fooBar/save2?\' . $query;

$args = [
  \'headers\' => [\'Content-Type\' => \'application/x-www-form-urlencoded\'],
  \'method\'  => \'POST\',
];

// Post the request.
$response = wp_remote_request($url, $args);

//Check for success
if (!is_wp_error($response) && ($response[\'response\'][\'code\'] === 200 || $response[\'response\'][\'code\'] === 201)) {
  return $response[\'body\'];
}

相关推荐