【问题标题】:cannot resolve URL in PHP无法在 PHP 中解析 URL
【发布时间】:2018-12-07 13:36:54
【问题描述】:

当我使用 cURL 发出请求时,会出现错误“无法解析主机 URL”。我应该对 URL 进行编码吗?在我对 Google API URL 进行编码后,它仍然报错。

https://developers.google.com/people/api/rest/v1/contactGroups/batchGet

GET https://people.googleapis.com/v1/contactGroups:batchGet

问题出在哪里?

    <?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://people.googleapis.com/v1/contactGroups:batchGet",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

【问题讨论】:

  • 尝试将:更改为%3A
  • 我对所有字符进行了编码。但是在centos7上仍然报错。在 Windows 10 上是可以的。我觉得很奇怪。
  • 我使用 Postman 在 Windows 上发出请求。我使用 TCP 嗅探器来提取 URL。在 Windows 上,我发现工作 URL 是 http://localhost:9000/?properties=%7B%22annotators%22%3A%22tokenize%2Cssplit%2Clemma%22%7D&amp;pipelineLanguage=en。然后我在Linux上使用它,URL运行成功。我注意到有些字符没有变形。

标签: php url curl google-api


【解决方案1】:

我没有发现代码有任何问题,我对其进行了测试,它运行良好。

我猜是 DNS 无法解析主机的问题。

【讨论】:

  • Centos 7 我使用并且 cURL 给出错误。我在我的 Windows 10 上测试是可以的。 Centos7 上的 Apache 服务器与 Windows10 上的 WAMP 有什么区别吗?
  • 在 CentOS 中从终端运行 curl 会得到什么? curl https://people.googleapis.com/v1/contactGroups:batchGet
  • @lemonsoft 那么问题不在于代码。检查您的互联网连接。尝试 ping 8.8.8.8,如果您能够 ping,那么问题是您的 DNS 服务器。您可以使用 nmcli dev show | grep -i 'dns' 检查您的 DNS
  • 我使用 Postman 在 Windows 上发出请求。我使用 TCP 嗅探器来提取 URL。在 Windows 上,我找到的工作 URL 是 http://localhost:9000/?properties=%7B%22annotators%22%3A%22tokenize%2Cssplit%2Clemma%22%7D&amp;pipelineLanguage=en。然后我在Linux上使用它,URL运行成功。我注意到有些字符没有变形。
猜你喜欢
  • 2021-08-08
  • 2015-02-28
  • 2022-12-11
  • 2022-12-17
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多