我正在查看API,所有示例都是使用cURL给出的。我自己不使用cURL,并且正在寻找可以作为GET参数发送的等效URL字符串。
例如,假设cURL命令是:
$ curl -X GET "https://thesite.com/api/orgs" \
-u "NEekIy8ngCpv8TbOjrliapP0D1Bu9SN9:"
这个等效的URL字符串是什么?可以复制并粘贴到浏览器中的东西,并返回相应的JSON响应。类似的东西:
https://thesite.com/api/orgs?user=NEekIy8ngCpv8TbOjrliapP0D1Bu9SN9
??
cURL docs说-u
是user:password
,这就是为什么我认为前一个cURL命令的GET变量是user=NEekIy8ngCpv8TbOjrliapP0D1Bu9SN9
(和{{ 1}}?)
这是正确的转换吗?无论我在哪里,我都无法在任何地方找到等效图表。即使是一个快速的代码,我可以用PHP或JS编写来创建一个cURL对象,然后返回格式化的URL字符串就足够了。
答案 0 :(得分:1)
这与Authorization HTTP标头和HTTP Authentication有关,它将包含用户名和密码。但是这个用户名不是GET参数,而是进入HTTP Header,因此不能在查询字符串中使用它(?user = ...)。
与此相当的字符串,在放入浏览器的地址栏时应该有效:
user:password@thesite.com/api/orgs
如果您使用
user@thesite.com/api/orgs
系统将提示您输入一个询问用户名和密码的消息框。
如果服务器端的方法是“基本”或“摘要”,则此方法有效。还有很多其他的auth方法。由于我不专注于这个主题,我不能告诉你它是否会一直有效。
另请查看链接页面上的最后一个注释:
不推荐使用这些网址。 ...
答案 1 :(得分:0)
您可以使用file_get_contents它与curl
相同代码示例:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
要发送$ _POST和$ _GET请求,您可以使用Guzzle http://docs.guzzlephp.org/en/latest/
代码示例:
<?php
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'
// Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
echo 'I completed! ' . $response->getBody();
});
$promise->wait();
?>