2013-03-14 64 views
0
发送授权密钥

我是新来的狂饮,我试图生成以下REST调用:PHP +狂饮,在头

https://product-search.api.cj.com/v2/product-search?website-id=1594990&keywords=%2Bsony+-camera 

GET /v2/product-search?website-id=1594990&keywords=%2Bsony+-camera HTTP/1.1 
Host: link-search.api.cj.com 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Cookie: __utma=128446558.2099392322683464700.1239639722.1239639722.1239927095.2; __utmz=128446558.1239639722.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); CONTID=8073; cjuMember=0; JSESSIONID=aM5RSWdqdd_5 
Authorization: YOUR DEV KEY HERE 

HTTP/1.x 200 OK 
Server: Resin/2.1.17 
Content-Type: application/xml 
Transfer-Encoding: chunked 
Date: Thu, 26 Apr 2009 10:25:03 GMT 

我使用下面的PHP代码:

$client = new Client('https://linksearch.api.cj.com', array(
    'id' => $website_id, 
    'keywords' => 'sony', 
)); 
$request = $client->get("v2/link-search?website-id={id}&keywords={keywords}"); 
$request->addHeader('Authorization', $dev_key); 
$response = $request->send(); 

这里的问题是,与addHeader()语句我得到的答案“坏请求”,没有addHeader()我得到“未经授权”。这似乎是我没有正确发送我的身份验证信息。有谁知道我在这里做错了吗?

+0

尽量避免在URI参数:{ID},{关键词}。到目前为止,我还没有能够正确地使用它们,并且出于无奈,我最终像这样手动添加它们:$ request-> getQuery() - > add('query','123')。有关更多信息,请参阅guzzlephp.org/http-client/request.html – Onema 2013-09-17 16:10:52

+0

- 取决于版本,语法可能有所不同。我建议那些访问这个网页的人使用这里的最新版本http://docs.guzzlephp.org/en/latest/index.html,如果它不起作用,不要气馁。只要严格按照说明书操作,就像在我的情况下一样guzzle6。 – Dung 2016-02-22 20:32:35

回答

1

实际这里问题是:

1)头“授权”可能是大小写敏感的,可能需要小写。

2)如果任何请求参数不正确,即使是您的网站ID,也会引发400错误。 400错误意味着“由于验证以外的原因,请求无效”。

+1

有趣的是,头部区分大小写。我已经看到了其他头文件区分大小写的情况,并且所有这些都忽略了HTTP/1.1不应该关心头文件的情况。然而,这就是为什么Guzzle会尊重您提供的任何情况,而不是强制特定的套管。 – 2013-03-19 02:07:32

0

我想你正在创建$请求不正确。试试这个:

$client = new Client(); 
$request = new Request('POST', 'http://someuri/path/here'); 

然后使用$客户端发送请求:

$response = $client->send($request);