2017-04-02 49 views
1

我得到使用Python通过执行以下代码HTTP响应:为什么http响应与站点和代码输出不同?

conn = httplib.HTTPSConnection('westus.api.cognitive.microsoft.com') 

conn.request("GET", "/something/somethig") 
response = conn.getresponse() 
#data = response.read() 
data =json.load(response) 
print(data) 

结果表明API的结果列表。

但他们是从被执行的一个,当我手动访问westus.api.cognitive.microsoft.com/something/something网站不同。

有人能告诉我这里有什么问题?

+0

'httplib'不评估JavaScript –

回答

0

有很多东西都是在一个脚本的请求,并在浏览器的请求之间的不同。首先,你的脚本不会执行页面上的任何关联的JavaScript。其次,http请求的头部包含了请求客户端的详细信息。

例如,对于一个REST接口中,服务器可以返回最清楚JSON到一个应用程序的请求以及用于一个浏览器请求返回一个格式化的页面。

在Chrome中,你可以用“...‘打开开发人员工具 - >’更多工具‘ - >’开发者工具”,并与开放,您可以打开所有请求,看看标题:

Chrome view of request headers

Firefox在查看标题时有类似的功能。点击汉堡包 - >“开发者” - >“Web控制台”。在“网络”下,您可以筛选请求。点击请求查看详细信息。

enter image description here

对于POST命令,也看请求的主体。

最后,上个星期,我试图在Java中自动执行一个POST命令,而且我在这方面遇到了一些困难。一位同事是能够使与curl命令调用,这给了我有关的关键参数足够的线索。所以,我建议尝试curl它可以帮助防止意外的人区分开的关键参数,或者至少看看从另一个角度的问题。

+0

但是当我给出一个输入时,响应是不同的。在网页中,它输出一个列表,其中有一个特定数组,其中填充了项目,而在脚本输出中,特定数组是空的。我不认为这与格式有关。 –

+0

将您的应用程序请求记录到控制台,并使用浏览器中的开发人员工具查看浏览器请求。 –

+0

另外,如果您有'curl'命令可用,请尝试使用相同的请求。 –

相关问题