【问题标题】:Is there a reason why http response is different from the site and code output?http响应与站点和代码输出不同是否有原因?
【发布时间】:2017-04-02 12:56:04
【问题描述】:

我通过执行以下代码使用 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网站时执行的不同。

谁能告诉我这里出了什么问题?

【问题讨论】:

  • httplib 不计算 JavaScript

标签: python http azure-language-understanding


【解决方案1】:

脚本中的请求和浏览器中的请求有很多不同之处。一方面,您的脚本不会从页面执行任何关联的 JavaScript。其次,您的 http 请求的标头包含请求客户端的详细信息。

例如对于 REST 接口,服务器可能会向应用程序请求返回最简单的 JSON,并为浏览器请求返回格式化页面。

在 Chrome 中,您可以使用“...”->“更多工具”->“开发者工具”打开开发者工具,打开后,您可以打开所有请求并查看标题:

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

对于 POST 命令,还要查看请求的正文。

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

【讨论】:

  • 但是当我输入时,响应是不同的。在网页中,它输出一个列表,其中包含一个填充了项目的特定数组,而在脚本输出中,该特定数组为空。我认为这与格式无关。
  • 将你的应用请求记录到控制台,使用浏览器中的开发者工具查看浏览器请求。
  • 另外,如果您有可用的curl 命令,请尝试同样的请求。
猜你喜欢
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2014-10-17
相关资源
最近更新 更多