【问题标题】:Convert Ajax POST script to PHP cURL POST Script将 Ajax POST 脚本转换为 PHP cURL POST 脚本
【发布时间】:2021-10-24 05:23:15
【问题描述】:

我正在尝试进行这样的 post 调用以返回 jwt 不记名令牌。但是在 php 中使用 cURL。所以我可以将不记名令牌保存到一个变量中,以便在 API 调用中使用。

$.ajax({
  type: 'POST',
  url: 'http://www.your-site.com/siteguard/api/prepare-public-jwt',
  data: { api_key: 'YOUR_PUBLIC_API_KEY' },
  dataType: 'json',
  success: function (data) {
    //Returns encoded JWT
    console.log(data);
  }
});

我正在使用的 PHP 代码

 $url = $this->getTokenUrl();

        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        $headers = array(
            "Content-Type: application/json",
        );
        
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

        $data = ["api_key" => "xOMjVpz83rxDKjJUX9qNClB2BwadcRWjm09YSCdasdabdasdasdasdgTR8fuvR7jQHP8ZVpbOOmdXqKEt0AVX"];

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

        //for debug only!
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        $resp = curl_exec($curl);
        curl_close($curl);
        var_dump($resp);

回报是这样的

{"code":401,"status":"error","response":"Invalid Public API key","link":"http:\/\/localhost\/siteguard\/api\/prepare-public-jwt"}"

【问题讨论】:

  • 1.下载邮递员,并使用所有必需的设置创建帖子。 2. 单击位于右上角的Code 按钮(在Windows 中)(距发送按钮大约下午2 点) 3. 选择所需的编程语言(在您的情况下为PHP-cURL)。 4. ??? 5. 利润!
  • 您是否确认令牌使用Javascript返回?您的 Siteguard 安装可能存在问题。
  • 另外,在curl_setopt($curl, CURLOPT_POSTFIELDS, $data);之前尝试json_encode($data)
  • @mulquin 它确实使用控制台中的 java 返回令牌。现在将尝试并返回结果
  • 不起作用,它仍然返回相同的错误。

标签: php ajax curl post


【解决方案1】:

我可以用这个实现它

        $url = $this->getTokenUrl();

        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => 'xOMjVpz83rxDKjJUX9qNClB2BwadcRWjm09YSCdasdabdasdasdasdgTR8fuvR7jQHP8ZVpbOOmdXqKEt0AVX',
            CURLOPT_HTTPHEADER => array(
              'Content-Type: application/x-www-form-urlencoded'
            ),
          ));
          
          $response = curl_exec($curl);
          $obj = json_decode($response);

          curl_close($curl);

          return $obj->response;

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2021-08-09
    • 2020-06-10
    • 1970-01-01
    • 2019-06-23
    • 2017-04-23
    相关资源
    最近更新 更多