簡體   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