繁体   English   中英

如何在 php 中将动态 URL 传递给 curl - 出现错误 1

[英]how to pass dynamic URL to curl in php - getting error 1

我正在尝试使用 function 将 $url 传递给 curl。URL 是通过以下方法构建的,其中包含一个变量:

a.php // main page, include (a.php, b.php)
b.php // dynamic string function
c.php // curl function

我使用会话数据成功构建了一个动态字符串 // $_SESSION["input"] myDynamicstringfunction 通过多个会话输入值设置一个字符串。

$dval = myDynamicstringfunction();
echo $dval;
// render correctly to: "-e5 -g6 -g7"

$dval 值是一个按预期解析的字符串。 $url 是:

$url = "https://someurl.com/a/b?dc=-cv1.5 -a1 -b2 -c3 -d4 $dval";

$url 正确呈现

echo $url;
$url = "https://someurl.com/a/b?dc=-cv1.5 -a1 -b2 -c3 -d4 -e5 -g6 -g7";

我使用以下方法将 $url 传递给 curl function:

$r = mycUrlfunction($url);

我使用的 curl function:

function singleRequest($url){
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
$curly = curl_exec($ch);
if ($curly == FALSE){
    die("cURL Error: " . curl_error($ch));
}

$result = json_decode($curly, true);

// close cURL resource, and free up system resources
curl_close($ch);

echo '<pre>';
return ($result);
}

上面给我一个错误 (curl 1) - CURLE_UNSUPPORTED_PROTOCOL (1)

我已经尝试了很多方法来让 $url 工作但没有成功。 如果我像这样在没有 $dval 变量的情况下手动设置 $url 值:

$url = "https://someurl.com/a/b?dc=-cv1.5 -a1 -b2 -c3 -d4 -e5 -g6 -g7";

代码工作正常,我从 API 调用中得到了正确的结果。 我尝试使用不同的引号、{}、[]、编码为 ASCII、vprintf() 和其他解决方案,但均未成功。

问题在于构造最初使用的 URL 的动态变量$dynamicstring

$dynamicstring= "-a" . $_SESSION["a"]." -b".$_SESSION['b']." -c".$_SESSION['c']." -d".$_SESSION['d']."<br>";

这有一些问题

  1. 使用 echo 时,它会正确呈现预期的 output
  2. 它最后有一个"<br>"
  3. 它有错误的结构

构造$dynamicstring的正确方法是使用 {}

$dynamicstring= "-a{$_SESSION["a"]} -b{$_SESSION['b']} -c{$_SESSION['c']} -d{$_SESSION['d']}";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM