我通过执行以下代码使用 Python 获得了一个 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
网站时执行的不同。
谁能告诉我这里出了什么问题?
最佳答案
脚本中的请求与浏览器中的请求有很多不同之处。首先,您的脚本不会从页面执行任何关联的 JavaScript。其次,您的 http 请求 header 包含请求客户端的详细信息。
例如,对于 REST 接口(interface),服务器可能会向应用程序请求返回最简单的 JSON,并为浏览器请求返回格式化页面。
在 Chrome 中,您可以使用“...”->“更多工具”->“开发人员工具”打开开发人员工具,打开后,您可以打开所有请求并查看 header :
Firefox 中有一个类似的功能可以查看标题。单击汉堡包->“开发人员”->“Web 控制台”。在“网络”下,您可以过滤请求。单击请求以查看详细信息。
对于 POST 命令,还要查看请求的主体。
最后,上周,我试图用 Java 自动执行 POST 命令,但我在这样做时遇到了一些困难。一位同事能够使用 curl
命令进行调用,这为我提供了有关关键参数的足够线索。所以我建议尝试使用 curl
,它可以帮助区分关键参数和意外参数,或者至少可以从另一个角度看问题。
关于python - http响应与站点和代码输出不同的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43168591/