以下是我用于解决卷曲连接问题的代码:
$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触发时才会发生。
这导致我的应用失败,因为无法访问资源...
答案 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? p>
您可以使用:
$url = 'http://example.com';
并且,如@RhapX所述
curl_setopt($_h, CURLOPT_URL, encodedurl);
应该是
curl_setopt($_h, CURLOPT_URL, $url);
注意变量名称更改。