标签: python-requests

Python请求requests.exceptions.SSLError:[Errno 8] _ssl.c:504:违反协议发生EOF

我在Ubuntu 12.10上使用OpenSSL 1.0.1c,python 2.7.3,请求 1.0.3和1.0.4(尝试过两者),并尝试使用以下代码连接到url变量中的网站.

def SendInitialRequest(xmlmessage, redirecturl):
    url = 'https://centineltest.cardinalcommerce.com/maps/txns.asp'

    payload = 'cmpi_msg=' + ET.tostring(xmlmessage)
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
    }
    r = requests.post(url, data=payload, headers=headers, verify=None)
    print r.text
Run Code Online (Sandbox Code Playgroud)

它会引发以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "clams/libs/centinel/thinclient.py", line 134, in SendInitialRequest
    r = requests.post(url, data=payload, headers=headers, verify=None)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 87, in post
    return request('post', url, data=data, **kwargs)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/sessions.py", line 269, …
Run Code Online (Sandbox Code Playgroud)

python openssl httprequest python-requests ubuntu-12.10

61
推荐指数
4
解决办法
12万
查看次数

使用TLS请求不会提供SNI支持

我正在使用请求与django应用程序通信但是

当我尝试

requests.get('https://mysite.com', verify=True)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

主机名'mysite.com'与'*.myhost.com','myhost.com'不匹配

但是,当我查看浏览器或http://www.digicert.com/help/时,证书看起来很精致和花花公子.

我的主持人建议缺少SNI支持请求(Github似乎确认https://github.com/kennethreitz/requests/issues/749).有没有人找到使用请求的解决方法?

python ssl ssl-certificate sni python-requests

61
推荐指数
5
解决办法
7万
查看次数

单元测试使用请求库的python应用程序

我正在编写一个使用Kenneth Reitz的请求库执行REST操作的应用程序,我正在努力寻找一种单独测试这些应用程序的好方法,因为请求通过模块级方法提供其方法.

我想要的是能够综合双方之间的对话; 提供一系列请求断言和响应.

python testing unit-testing mocking python-requests

60
推荐指数
3
解决办法
4万
查看次数

ImportError:没有名为'Queue'的模块

我正在尝试导入requests模块,但是我得到了这个错误,我的python版本是在ubuntu 14.04上运行的3.4

>>> import requests
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/requests/packages/urllib3/connectionpool.py", line 10, in <module>
    from queue import LifoQueue, Empty, Full
ImportError: cannot import name 'LifoQueue'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/requests/__init__.py", line 58, in <module>
   from . import utils
  File "/usr/local/lib/python3.4/dist-packages/requests/utils.py", line 26, in <module>
    from .compat import parse_http_list as _parse_list_header
  File "/usr/local/lib/python3.4/dist-packages/requests/compat.py", line 7, in <module>
    from .packages import …
Run Code Online (Sandbox Code Playgroud)

python python-requests

56
推荐指数
4
解决办法
15万
查看次数

如何让Python请求信任自签名SSL证书?

import requests
data = {'foo':'bar'}
url = 'https://foo.com/bar'
r = requests.post(url, data=data)
Run Code Online (Sandbox Code Playgroud)

如果URL使用自签名证书,则会失败

requests.exceptions.SSLError: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我知道我可以传递Falseverify参数,如下所示:

r = requests.post(url, data=data, verify=False)
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是将请求指向磁盘上的公钥副本,并告诉它信任该证书.

python ssl python-requests

53
推荐指数
9
解决办法
8万
查看次数

Python请求使用keep-alive加速

在HTTP协议中,您可以使用keep-alive在一个套接字中发送许多请求,然后立即从服务器接收响应,这样可以显着加快整个过程.有没有办法在python请求lib中执行此操作?或者有没有其他方法可以使用请求lib加快速度?

python http python-sockets python-requests

52
推荐指数
1
解决办法
4万
查看次数

如何在Django 1.6中使用HTTP POST请求接收json数据?

我正在学习Django 1.6.
我想使用HTTP POST请求发布一些JSON,我正在使用Django来完成此任务的学习.
我试图用request.POST['data'],request.raw_post_data,request.body但都不是为我工作.
我的views.py是

import json
from django.http import StreamingHttpResponse
def main_page(request):
    if request.method=='POST':
            received_json_data=json.loads(request.POST['data'])
            #received_json_data=json.loads(request.body)
            return StreamingHttpResponse('it was post request: '+str(received_json_data))
    return StreamingHttpResponse('it was GET request')
Run Code Online (Sandbox Code Playgroud)

我使用请求模块发布JSON数据.

import requests  
import json
url = "http://localhost:8000"
data = {'data':[{'key1':'val1'}, {'key2':'val2'}]}
headers = {'content-type': 'application/json'}
r=requests.post(url, data=json.dumps(data), headers=headers)
r.text
Run Code Online (Sandbox Code Playgroud)

r.text应打印该消息并发布数据,但我无法解决这个简单的问题.请告诉我如何在Django 1.6中收集发布的数据?

python django http-post django-views python-requests

50
推荐指数
2
解决办法
8万
查看次数

SystemError:使用请求和调试器时,无异常设置的错误返回

环境:Python 3.6.3请求2.18.4 PyCharm 2018.1

在正常运行中使用上述配置时一切都很好.但是,当使用PyCharm调试器时,我的输出不断给出两种例外:

Exception ignored in: <generator object urlsplit.<locals>.<genexpr> at 0x7f69803940a0>
Traceback (most recent call last):
  File "/usr/lib/python3.6/urllib/parse.py", line 433, in <genexpr>
    if not rest or any(c not in '0123456789' for c in rest):
Run Code Online (Sandbox Code Playgroud)

要么

SystemError: error return without exception set
Exception ignored in: <generator object iter_slices at 0x7f69803940f8>
Traceback (most recent call last):
  File "/home/damian/workspace/DofusV2/venv/lib/python3.6/site-packages/requests/utils.py", line 449, in iter_slices
    def iter_slices(string, slice_length):
`
Run Code Online (Sandbox Code Playgroud)

这不是单个项目中的问题,我在无数个项目中无数次地遇到过这个问题.但是,每个项目都是多线程的(我不知道这是否有任何区别)事情是我没有使用调试器时没有这个问题加上它没有真正做任何事情,应用程序是稳定的并且工作正常.我的问题是为什么会发生这种情况,我能否至少压制它以免污染我的日志?

pycharm python-3.x python-requests

50
推荐指数
1
解决办法
1万
查看次数

python忽略证书验证urllib2

我想certification validation在使用内部企业链接向服务器发出请求时忽略它.

使用python requests库我会这样做:

r = requests.get(link, allow_redirects=False,verify=False)
Run Code Online (Sandbox Code Playgroud)

如何使用urllib2库进行相同的操作?

python urllib2 python-2.7 python-requests

49
推荐指数
5
解决办法
11万
查看次数

更改python请求中的referer URL

如果我使用请求库向网页发出GET请求,如何更改引用者.我浏览了整本手册但找不到它.

python referer python-2.7 python-requests

48
推荐指数
1
解决办法
4万
查看次数