2012-09-18 30 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> 

将此代码添加到页面顶部,它将在打开页面之前自动替换带有“ - ”短划线的空格。

谢谢你