【问题标题】:URL (string) equivalents for cURL commands?cURL 命令的 URL(字符串)等效项?
【发布时间】:2017-04-19 16:56:42
【问题描述】:

我正在查看 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 表示 -uuser:password,这就是为什么我认为前面 cURL 命令的 GET 变量是 user=NEekIy8ngCpv8TbOjrliapP0D1Bu9SN9(和 password=?)

这是正确的转换吗?无论我在哪里看,我都无法在任何地方找到等效图表。即使是我可以用 PHP 或 JS 编写的快速代码来创建一个 cURL 对象,然后返回格式化的 URL 字符串就足够了。

【问题讨论】:

    标签: javascript php curl


    【解决方案1】:

    这与 Authorization HTTP 标头和 HTTP Authentication 有关,其中将包含用户名和密码。但是这个用户名不是 GET 参数,它进入了一个 HTTP Header,所以不能在查询字符串中使用它(?user=...)。

    相当于这个的字符串,当放入浏览器的地址栏时应该可以工作:

    user:password@thesite.com/api/orgs
    

    如果你使用

    user@thesite.com/api/orgs
    

    系统将提示您输入一个询问用户名和密码的消息框。

    如果服务器端的方法是“基本”或“摘要”,则此方法有效。还使用了许多其他身份验证方法。由于我不是这个主题的专业人士,我无法告诉你它是否会一直有效。

    还可以查看链接页面上的最后一条注释:

    不推荐使用这些 URL。 ...

    【讨论】:

      【解决方案2】:

      你可以使用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();
      
      ?>
      

      【讨论】:

      • 是的,但这并不能回答我的问题。我不是在寻找等效的 PHP,而是在寻找等效的字符串。如果您要展示一个示例,请至少使用我的问题中的同一个示例,其中包含-u 内容。这个答案只是为了在 SO 上获得更多声誉。
      • 阅读我的答案更新我添加了有关如何使用 guzzle 发送帖子和获取请求的更多信息
      • 感谢您的更新。感谢您在身份验证参数中包含一些内容。我仍然对 GET 格式的 URL 字符串到底是什么样子感兴趣。这不是一个 POST 请求,所以应该有一个有形的字符串,我可以(理论上)复制并粘贴到浏览器中,并收到有效的响应。
      猜你喜欢
      • 2013-02-02
      • 2013-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      相关资源
      最近更新 更多