2013-10-18 100 views
0

我正在使用Web服務API。 http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=1&type=nREST API - 在Chrome中工作但捲曲不起作用

可以返回該地址到chrome中的預期結果(包含歌曲信息的json文件),但使用curl時會失敗。 (在這兩種情況下,響應代碼是確定的,但響應的身體是不正確的在後一種情況下)

下面是使用Chrome開發者工具甩請求信息:

Request URL:http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n 
Request Method:GET 
Status Code:200 OK 
Request Headersview source 
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:zh-CN,zh;q=0.8 
Connection:keep-alive 
Cookie:bid="lwaJyClu5Zg" 
Host:www.douban.com 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 
Query String Parametersview sourceview URL encoded 
app_name:radio_desktop_win 
version:100 
user_id: 
expire: 
token: 
sid: 
h: 
channel:7 
type:n 

然而,使用與該API捲曲,即curl http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n不會返回預期結果。

即使指定正確的標題爲從Chrome轉儲仍然失敗。

curl -v -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "Accept-Encoding:gzip,deflat,sdcn" -H "Accept-Language:zh-CN,zh;q=0.8" -H "Cache-Control:max-age=0" -H "Connection:keep-alive" -H "Host:www.douban.com" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win&version=100&user_id=&expire=&token=&sid=&h=&channel=7&type=n 

以下是用curl打印出的-v。似乎一切都與Chrome所提出的請求相同,但仍然是響應主體不正確。

GET/J /應用/收音機/人APP_NAME = radio_desktop_win HTTP/1.1 的User-Agent:Mozilla的/ 5.0(Macintosh上;英特爾的Mac OS X 10_7_5)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 30.0.1599.101 Safari/537.36 Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,image/webp,/; q = 0.8 Accept-Encoding:gzip,deflat,sdcn Accept -language:ZH-CN,ZH; q = 0.8 緩存控制:最大年齡= 0 連接:保持活着 主機:www.douban.com

爲什麼發生這種情況?感謝你的幫助。

回答

3

您需要在shell中引用該URL。否則&會引起麻煩。

另一個常見問題:您可能在Chrome上使用HTTP代理。如果是這樣,你也需要告訴curl這個代理。您可以通過設置環境變量http_proxy來實現。