python - http响应与站点和代码输出不同的原因是什么?

标签 python http azure-language-understanding

我通过执行以下代码使用 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 :

Chrome view of request headers

Firefox 中有一个类似的功能可以查看标题。单击汉堡包->“开发人员”->“Web 控制台”。在“网络”下,您可以过滤请求。单击请求以查看详细信息。

enter image description here

对于 POST 命令,还要查看请求的主体。

最后,上周,我试图用 Java 自动执行 POST 命令,但我在这样做时遇到了一些困难。一位同事能够使用 curl 命令进行调用,这为我提供了有关关键参数的足够线索。所以我建议尝试使用 curl,它可以帮助区分关键参数和意外参数,或者至少可以从另一个角度看问题。

关于python - http响应与站点和代码输出不同的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43168591/

相关文章:

python - 使用 matplotlib 同时绘制两个函数

python - PyMySQL executemany with ON DUPLICATE

node.js - botbuilder LuisRecognizer 不在代理后面工作

http - 如何以 RESTful 方式实现 "views"计数器?

botframework - Azure BOT 框架,将 QnA Maker 与 LUIS 集成

botframework - LUIS 创作 API : How do I filter LUIS utterances by intent?

python - OpenCV Python 导入模块

python - Ansible 使用解析字符串和循环更新 Dict Var

javascript - SAPUi5 文件 uploader 设置 WebKitFormBoundary

html - Youtube https 嵌入在 Firefox 中导致警告