PHP - Curl正在将HTTP://添加到我的HTTPS URL

时间:2015-08-06 00:19:30

标签: php curl

以下是我用于解决卷曲连接问题的代码:

$url = 'https://myurl.com';
$encodedurl = urlencode($url);

$token = 'my_api_key';
$postfields = 'my data';

$_h = curl_init($newurl);
curl_setopt ($_h, CURLOPT_HTTPHEADER, array('Authentication: Token=mytoken'));
curl_setopt($_h, CURLOPT_HEADER, 1);
curl_setopt($_h, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($_h, CURLOPT_POST, 1);
curl_setopt($_h, CURLOPT_URL, encodedurl);
curl_setopt($_h, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($_h, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
curl_setopt ($_h, CURLOPT_POSTFIELDS, $postfields);

var_dump(curl_exec($_h));
var_dump(curl_getinfo($_h));
var_dump(curl_error($_h));

当我执行此操作时,我会将其作为数组的一部分收到:

["url"]=> string(59) "HTTP://https://myencodedurl.com/"

任何人都知道如何摆脱那个HTTP://它正在添加到开头?我已经在每个可能的地方尝试过str_replace,但它似乎只在curl_exec触发时才会发生。

这导致我的应用失败,因为无法访问资源...

3 个答案:

答案 0 :(得分:1)

Urlencoded网址不再是网址。它错过了协议部分,因为://获得了百分比编码(例如https%3A%2F%2Fmyurl.com),因此curl假定并添加http://。但http://https%3A%2F%2Fmyurl.com仍然不是有效的URL,请求失败。

答案 1 :(得分:0)

您的CURLOPT_URL未正确设置。确保您传递的变量是$encodedurl而不是encodedurl

最重要的是,您不需要对您的网址进行编码。因此,只需传递

curl_setopt($_h, CURLOPT_URL, $url);

会工作得很好。

答案 2 :(得分:0)

你为什么使用urlencode?

您可以使用:

$url = 'http://example.com';

并且,如@RhapX所述

curl_setopt($_h, CURLOPT_URL, encodedurl);

应该是

curl_setopt($_h, CURLOPT_URL, $url);

注意变量名称更改。