当前位置: 首页 > 面试题库 >

如何从Python请求中读取响应?

狄灵均
2023-03-14
问题内容

我有两个Python脚本。一种使用Urllib2库,另一种使用Requests库。

我发现请求更容易实现,但是找不到urlib2的等效read()函数。例如:

...
response = url.urlopen(req)
print response.geturl()
print response.getcode()
data = response.read()
print data

建立完发布网址后,请data = response.read()给我内容-我正尝试连接到vcloud Director
api实例,并且响应显示了我有权访问的端点。但是,如果我按以下方式使用请求库....

....

def post_call(username, org, password, key, secret):

    endpoint = '<URL ENDPOINT>'
    post_url = endpoint + 'sessions'
    get_url = endpoint + 'org'
    headers = {'Accept':'application/*+xml;version=5.1', \
               'Authorization':'Basic  '+ base64.b64encode(username + "@" + org + ":" + password), \
               'x-id-sec':base64.b64encode(key + ":" + secret)}
    print headers
    post_call = requests.post(post_url, data=None, headers = headers)
    print post_call, "POST call"
    print post_call.text, "TEXT"
    print post_call.content, "CONTENT"
    post_call.status_code, "STATUS CODE"

....

.... theprint post_call.text和不print post_call.content返回任何内容,即使请求后调用中的状态代码等于200。

为什么我对请求的响应不返回任何文本或内容?


问题答案:

请求不具有与Urlib2等效的请求read()

>>> import requests
>>> response = requests.get("http://www.google.com")
>>> print response.content
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head>....'
>>> print response.content == response.text
True

您发出的POST请求似乎不返回任何内容。POST请求通常是这种情况。也许它设置了一个cookie?状态代码告诉您POST毕竟成功。



 类似资料:
  • 问题内容: 尝试从中的响应获取SSL证书。 什么是这样做的好方法? 问题答案: 故意包装这样的低级内容。通常,您唯一要做的就是验证证书是否有效。为此,只需通过即可。如果要使用非标准的cacert捆绑包,也可以通过。例如: 另外,主要是围绕其他库的一组包装器,主要是stdlib的(或对于2.x而言)和。 有时候,答案是只是为了获得在较低级别的对象(例如,是),但在许多情况下,这是不可能的。 这就是其

  • 我如何解析JSON请求之类的东西? 示例代码: 带有_名称的位置_为无

  • 我有一个API,访问该API的人必须传递一个授权令牌,所以我的问题是如何从头中获取该认证令牌?

  • 我创建了一个反向代理,如下所示: 并从main调用它: 它在客户端可以正常工作,但是我想阅读代理的响应,我怎么做?

  • 做这件事的好方法是什么?

  • 在移动应用程序和Web服务之间有某种代理,我们在发出发布请求时对响应感到困惑。我们收到状态为200: OK的响应。但是我们找不到/提取JSON响应正文。 我们正在使用JAX-RS。有人能提供一些提示,从服务器响应中提取JSON主体(