2012-09-18 29 views
2

所以這似乎是一個常見的錯誤,但我已經嘗試了一切,它只是不工作!file_get_contents和&

我的代碼目前看起來是這樣的:

$apikey = "XXXXXXXXX"; 
$search_url = "https://www.googleapis.com/shopping/search/v1/public/products?key=$apikey&country=US&q=$item_title&restrictBy=gtin&alt=json"; 

$response = file_get_contents($search_url); 

我用盡了一切從urldecode到html_entity_decode /編碼到幾乎所有我能找到,但還是解決方案,得到了同樣的錯誤:

file_get_contents(https://www.googleapis.com/shopping/search/v1/public/products?key=XXXXX&country=US&q=THESTRING&restrictBy=gtin&alt=json) failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 

,你可以看到,而不是純醇」 &(號),我得到&安培

我記得有一個simil這個問題很簡單,就是我在字符串的開頭沒有「http://」。但正如你所看到的那樣,情況並非如此。

謝謝!

+0

你能粘貼phpinfo()嗎? – GBD

+0

你可以檢查你的php.ini文件中是否啓用了allow_url_fopen?或嘗試另一個網址,如$ query = file_get_contents('http://www.youtube.com/watch?V = XiFrfeJ8dKM'); – GBD

+0

allow_url_fopen =在php.ini中打開 當我做file_get_contents(「http://www.google.com」)時,我沒有收到錯誤(並且打印$響應按預期工作)。 即使正在執行file_get_contents(「https://www.google.com/imghp?hl=en&tab=wi」)作品 – user1595077

回答

0

你是否嘗試過使用單引號,這樣你的測試字符串就可以從字面上看出來?在

$search_url = 'https://www.googleapis.com/shopping/search/v1/public/products?key='.$apikey.'&country=US&q=$item_title&restrictBy=gtin&alt=json'; 
+0

是的,我試過了,它不起作用。 但我發現什麼工作(愚蠢的我) - 我傳入的字符串&q = $ item_title中有空格。我需要找到一種方法來將它們翻譯成可以工作的東西(加號可能?),但這基本上是導致問題的原因... – user1595077

+0

現在看來麻煩了,當我傳遞一個項目標題時它,它會給出這個錯誤。我嘗試過「引用」該項目(單和雙),將空格轉換爲%20和加號,但它似乎不工作......任何想法? – user1595077

+0

你用cURL試過了嗎? curl比file_get_contents快得多。你可以粘貼帶有apikey的值嗎? – GBD

-1

回答我的問題是很簡單:

當$ ITEM_TITLE包含空格,PHP拋出一個錯誤。爲了解決這個問題,所有我所要做的就是將它添加到我的代碼:

strtr($item_title, " ", "+"); 

改變空格來加的跡象。沒有更多失敗的請求!

謝謝你們。

+1

同樣,正如我上面提到的那樣,爲此使用'urlencode'。 – slugonamission

+0

此外,如果解決了您的問題,則將答案標記爲已接受。 –

0

嘗試刪除從參數空間,如在我的情況:

search_jobs.php?catagory_select=1&keys=head of IT 

單詞「IT負責人」之間有空間時,它不工作

search_jobs.php?catagory_select=1&keys=head-of-IT 

我已經更換了空間「 - 「破折號和現在的工作。

,如果你認爲你將需要做出很多的腳本修改,以取代所有空格,則這裏的頁面上的快捷方式正被打開,好像我是打開一個頁面:

「search_jobs.php ?catagory_select = 1個&鍵= IT主管IT的頭」

我們從參數自動repalce空間 「」 你需要添加加載頁面的JavaScript代碼 「search_jobs.php

<script> 
if(location.href.indexOf('%20') > -1){ 
    location.href = location.href.replace('%20','-'); 
} 
    </script> 

將此代碼添加到頁面頂部,它將在打開頁面之前自動替換帶有「 - 」短劃線的空格。

謝謝你