【问题标题】:Curl not working in wp卷曲在 wp 中不起作用
【发布时间】:2017-11-10 17:17:16
【问题描述】:

我在 wordpress 中有这个要求,

        $url = $this->apiUrl . '/' . $url;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Accept: application/json',
            'Content-Type: application/json',
            'X-Client: PHP ' . phpversion()
        ));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_USERPWD, ":" . $this->apiKey);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        switch ($httpVerb) {
            case 'post':
                curl_setopt($ch, CURLOPT_POST, true);
                if ($data) {
                    $encoded = json_encode($data);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded);
                }
                break;
        }
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        echo json_encode(curl_getinfo($ch));
        curl_close($ch);

这就是响应

 {"url":"https:\/\/api.paylike.io\/cards\/5a05ba1d752c916c2607c5fb","content_type":null,"http_code":400,"header_size":435,"request_size":242,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.395293,"namelookup_time":0.01238,"connect_time":0.01387,"pretransfer_time":0.031095,"size_upload":0,"size_download":0,"speed_download":0,"speed_upload":0,"download_content_length":-1,"upload_content_length":-1,"starttransfer_time":0.395242,"redirect_time":0,"redirect_url":"","primary_ip":"104.20.8.147","certinfo":[],"primary_port":443,"local_ip":"138.68.167.102","local_port":45414}

链接没问题,但我不知道为什么会出现 400 错误,请尝试访问该页面并查看是否正常: https://api.paylike.io/cards/5a05ba1d752c916c2607c5fb

那么错误在哪里,wordpress 有一些限制吗?我在 wordpress 之外尝试了这段代码,它可以工作。我也尝试过 spotify 我的 curl,但没有结果......

【问题讨论】:

  • 我认为您的问题在这里curl_setopt($ch, CURLOPT_USERPWD, ":" . $this->apiKey);,您可能必须单独传递密钥或用冒号分隔的用户/密钥。单独的冒号和密钥看起来很奇怪。
  • curl_setopt($curl, CURLOPT_VERBOSE, true); 应该会为您提供更多信息。您的请求可能完全没问题,而服务器只是出于其他原因拒绝了它。

标签: php wordpress curl


【解决方案1】:

首先检查您的系统或服务器是否启用了 curl。您可以使用带有此代码的简单页面来检查它。

phpinfo();

如果启用 curl,它将显示在那里。如果未启用,请启用它。

接下来检查 curl 错误并将其清除。只需在 curl_exec($ch); 之后添加此代码即可

'错误详情:' . curl_error($ch); 它会显示错误。

【讨论】:

  • 所以,我检查了 phpinfo,并且 curl 已启用,而且 curl_error($ch) 没有显示任何内容
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 2012-04-08
  • 2018-06-05
  • 2018-11-06
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多