[英]I am having an issue with posting to a URL using cURL
我正在做一個小項目,遇到了麻煩。 我正在嘗試使用 cURL 特別是 curl_init 將信息發布到 URL。 當我將完整的 URL 放入代碼中時,我可以使代碼正常工作,當我嘗試更改 URL 的某個方面時出現問題。例如
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://test.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pdata);
上面的代碼工作正常,但是如果我做類似下面的代碼就會出錯。
$mode = "one";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://' . $mode . '.test.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pdata);
我是不是做錯了什么,或者 function 不接受這種 URL 操作?
這是一個簡單的字符串引用錯誤,實際上與 cURL 或 URL 無關 - 盡管在這種情況下它會導致您形成不正確的 URL。這是您的代碼生成的 URL -
https://' . one . '.test.com
演示: http://sandbox.onlinephpfunctions.com/code/e2a878e59681f9c731140d5005043eb7bb2ab91a
而顯然你想要的是
https://one.test.com
您可以通過兩種方式解決此問題 - 一種正確使用字符串連接(通過以"
而不是'
結束第一個字符串並類似地開始第二個字符串),另一種使用 PHP 的插值功能將變量簡單地放置在單個字符串中。
方法一:
$mode = "one";
curl_setopt($ch, CURLOPT_URL, "https://".$mode.".test.com");
方法二:
$mode = "one";
curl_setopt($ch, CURLOPT_URL, "https://$mode.test.com");
對於任何字符串,您都會遇到同樣的問題 - 您不能以"
開始一個字符串,然后以'
結束它並期望它產生有效的 output。兩端的分隔符必須相同。
在這種特定情況下,您實際上只是以一個長字符串結束,因此您沒有語法錯誤,但它會導致一個字符串不包含您預期的內容,導致 cURL 請求失敗,因為URL 是錯誤的。
我認為是因為您正在關閉單次和雙次嘗試:“https://”。 $模式。 “.test.com”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.