php - 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,但响应也是未经授权的。
执行此类请求的方法是什么,以及传递用户名、密码和所有其他数据(如地址等)的正确方法是什么?
谢谢!
解决方案
我找到了解决方案。看来客户给我发了一个错误的链接。花了几个小时来解决这个问题。
推荐阅读
- javascript - vuejs中的多个嵌套下拉菜单
- powershell - 我是否使用了错误的 .exe 文件来创建 Chocolatey 包?
- angular - 无法绑定到“dataSource”,因为它不是“mat-table”的已知属性
- sql - 按时间序列分组的 SQL 查询
- node.js - nginx身份验证时出现Node.js 401错误
- python - 带有导入数据的 Python 地理图,例如来自荷兰的数据
- python - 将参数传递给 Flask API 方法
- python - Django - 单击最喜欢的链接后重定向到查看
- python-3.x - 制作skip-gram模型,将keras1.x代码转换为keras2.x代码
- java - 替代新方法以避免重复代码