【发布时间】:2021-02-05 13:14:50
【问题描述】:
我正在尝试将 API 集成到我的 Wordpress 插件中。以下 PHP 代码成功连接到 API 并检索房地产列表(API 来自房地产软件):
$url = 'https://api.whise.eu/v1/estates/list';
$body = array(
'Filter' => array( 'languageId' => 'nl-BE'),
);
$args = array(
'headers' => array( 'Authorization' => 'Bearer ' . $token),
'body' => json_decode($body)
);
$response = wp_remote_post($url,$args);
根据文档 (http://api.whise.eu/WebsiteDesigner.html#operation/Estates_GetEstates),可以过滤结果,但我无法让它工作。我在 API 和 JSON 方面没有太多经验,所以我可能在这里遗漏了一些东西。
即使我按照文档中的说明添加了语言过滤器,上面的代码仍然检索英文数据。当我将'body' => json_decode($body) 替换为'body' => $body 时,我得到以下响应:
{"Message":"The request entity's media type 'application/x-www-form-urlencoded' is not supported for this resource."}
谢谢!
【问题讨论】:
-
我看到您的代码中唯一缺少的是
Content-Type标头。通常,在发送以 JSON 字符串为正文的请求时,您还需要将其设置为application/json。也许这就是您的语言过滤器不起作用的原因? -
谢谢,我添加了 Content-type 标头,当仅使用 'body' => $body 时,'error' 消息消失了。但是,语言过滤器似乎仍然无法正常工作。我可能会与他们的支持取得联系。谢谢 :)
-
你应该使用
'body' => json_decode($body),那部分代码是正确的。 -
哦,我明白了,谢谢!
-
...再想一想,不,不要使用它:P 你应该使用
'body' => json_encode($body)