当前位置: 首页 > 知识库问答 >
问题:

REST API-适用于chrome,但curl不工作

宦高岑
2023-03-14

我正在使用Web服务API。http://www.douban.com/j/app/radio/people?app_name=radio_desktop_win

在chrome中键入该地址,可以返回预期结果(包含歌曲信息的json文件),但使用curl时失败。(在这两种情况下,响应代码正常,但在后一种情况下,响应主体不正确)

以下是使用Chrome developer工具转储的请求信息:

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一起使用,即curlhttp://www.douban.com/j/app/radio/people?app_name=radio_desktop_win

即使将确切的头指定为从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的请求一致,但响应主体仍然不正确。

/j/app/radio/people?app_name=radio_desktop_winHTTP/1.1 User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X10_7_5)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/30.0.1599.101Safari /537.36接受:text/html,应用程序/xhtml xml,应用程序/xml;q=0.9,图像/webp,/; q=0.8 Accept-Encode: gzip, de平面, sdcn Accept-Language: zh-CN, zh; q=0.8 Cache-Control: max-age=0连接:保活主机:www.douban.com

为什么会这样?谢谢你的帮助。


共有1个答案

任长卿
2023-03-14

您需要在shell中的url周围加引号。否则,

另一个常见问题是:您可能在Chrome上使用HTTP代理。如果是这样,您还需要告诉curl关于这个代理的情况。您可以通过设置环境变量http\u proxy来执行此操作。

 类似资料:
  • 问题内容: 以下代码可在Google Chrome beta和IE 7中运行。但是,Firefox似乎对此有问题。我怀疑这是我的CSS文件如何包含的问题,因为我知道Firefox对跨域导入不太友好。 但这仅仅是静态HTML,而没有跨域问题。 在我的landing-page.html上,我像这样进行CSS导入: 在main.css中,我还有另一个导入,例如: 在type.css中,我有以下声明: 我

  • 问题内容: 好的,这是一些演示此问题的示例代码。如果我单击Firefox中的按钮,第一个选项将消失。如果单击chrome中的按钮,则什么也没有发生,或者如果我检查第一个选项,它确实具有属性“ style =’display:none’”,但html页面上的选项本身未隐藏。 为什么在chrome中不起作用? 问题答案: 解决方法是删除元素以响应您的事件,并在需要时以及在需要时将其重新添加。IIRC,

  • 问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt

  • 所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。

  • 我正在编写一个 C# 应用程序来解码此字符串: "--W 3原文3 R hcn Rfd Gl tZ SI 6 I jAi L CJ w cm 9 k dW N 0 X 2 lk I jo iO D Q wM DMz MD气LC J 1 cm wi O iI if Sx 7 InN 0 Y XJ 0 X 3 Rp b WU iO iI 3 OS In by b 2 R 1 Y 3 Rfa WQ iO

  • 列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。