【发布时间】:2015-01-02 22:55:00
【问题描述】:
我不是专业的 PHP 程序员,但我不得不编写一个 PHP 脚本,该脚本将向 API 发送 HTTP POST 请求。这篇文章还包括一些 JSON 内容(我已使用 jsonlint.com 验证其格式正确)。我不断收到“400 Bad Request”,所以我假设我的某些内容格式不正确。
$json = "<JSON markup goes here>";
$options = array(
'http' => array
(
'method' => 'POST',
'content' => $json,
'header' => "Content-Type: application/json\r\n" .
"Accept: application/json\r\n" .
"Api-User: <API USER GOES HERE>\r\n" .
"Api-Key: <API KEY GOES HERE>\r\n"
)
);
$url = "https://url/paths";
$context = stream_context_create( $options );
$result = file_get_contents( $url, false, $context );
$response = json_decode( $result );
我搜索了这个网站,大多数示例似乎与我正在做的事情相匹配……所以我不知道问题出在哪里。我注意到的一个区别(与示例相比)是我的发布到一个 HTTPS 网址......但从我读过的内容来看,这并没有太大的区别。你们能提供的任何帮助将不胜感激!
【问题讨论】:
-
你连接的api是什么?他们通常会提供有关返回状态代码原因的文档。
-
我没有看到任何“主机”标头。
-
不幸的是,API 文档只说“由于语法错误,服务器无法理解请求。”为他们的 400 错误请求。 :-/ 这就是让我认为这是我在构建请求时做错的事情。
-
错误 400 可能只是来自 API 的正常响应。例如,Mailchimp API 在尝试将现有用户添加到邮件列表时提供此功能。
标签: php http post http-status-code-400