首页 > 解决方案 > HTTP post 请求以发送数据并获取响应 (API)

问题描述

我必须进行 API 调用。在文档中有一个示例 URL,我必须使用它来传递包括授权在内的参数,它看起来像这样:

https://.com/create/shipment_?username=your_username_here?password=your_password_here?address=street1?package=t-shirtbox

但由于 API 使用 post 方法,我无法通过 http 进行操作。我必须提出一个实际的发布请求。

我试过卷曲:

$url = https://.com/create/shipment_?username=your_username_here?password=your_password_here?address=street1?package=t-shirtbox
$username = 'username';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
$httpCode = curl_getinfo($ch , CURLINFO_HTTP_CODE); 
$response = curl_exec($ch);
if ($response === false) $response = curl_error($ch);
curl_close($ch);

我得到回复:

未经授权。此服务器无法验证您是否有权访问所请求的文档。要么您提供了错误的凭据(例如,错误的密码),要么您的浏览器不了解如何提供所需的凭据。

我试过php,结果是一样的。

$options = array(
'http' => array(
    'method'  => 'POST',
    'header'=>  "Content-Type: application/json\r\n" .
        "Accept: application/json\r\n".
        "Authorization: Basic ". base64_encode("username:password") ."\r\n".
        "GEOClient: account/123456\r\n".
        "Content-Length: 0"
)
);

$context     = stream_context_create($options);
$result      = file_get_contents($url, false, $context);

响应是未经授权的。

支持团队说他们为该帐户提供给我的用户名和密码是有效的。

我还使用邮递员和 SOAP UI 等工具来测试该 URL,但响应也是未经授权的。

执行此类请求的方法是什么,以及传递用户名、密码和所有其他数据(如地址等)的正确方法是什么?

谢谢!

标签: phpapihttpcurlrequest

解决方案


我找到了解决方案。看来客户给我发了一个错误的链接。花了几个小时来解决这个问题。


推荐阅读