我正在尝试为airplay接收器(包含在电视媒体播放器中)构建一个android控制器。
我正在使用curl来测试请求,还使用了postman,这是一个构建http请求的chrome扩展。 如果我使用邮递员,服务器很好地理解请求,但我不能用curl重现请求。
例如,询问当前播放媒体的当前位置的请求:
curl -i \
192.168.1.42:7000/scrub \
-H "Connection: keep-alive" \
-H "Cache-Control: no-cache" \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" \
-H "Accept: */*" \
-H "Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4" \
-H "Accept-Encoding: gzip,deflate,sdch" \
-H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3" \
返回:
HTTP/1.1 200 OK
Content-Type: text/parameters
Content-Length: 38
duration: 0.000000
position: 0.000000
当邮递员返回正确的值时:
duration: 275.838989
position: 13.000000
curl请求中使用的标头来自邮递员使用Chrome的开发工具发出的请求。
那么,在有效发送的请求与我在开发工具中看到的请求之间,Chrome中的请求是否存在任何差异?这个问题当然可以来自其他地方,因为对我而言,卷曲无法重现同样的反应。
答案 0 :(得分:0)
要尝试两件事:
使用-v检查curl的结果,以查看从命令行传递的标头。确保一切都与通过邮递员发送的标题相匹配
检查主机是否正在设置Cookie(邮递员中的标签)。如果是,请尝试使用-b选项http://curl.haxx.se/docs/http-cookies.html