![](/img/trans.png)
[英]python requests.post error when upgrade from 2.7 to 3.6
[英]Python3.6 requests.post results in ConnectionError number 104, but all is fine when using curl
我正在尝试将curl命令重写为python。 这个想法是这样的:我们上传一个音频文件,并以文本形式返回它所说的内容,例如语音到文本。
该网站为我们提供了curl的示例,该示例发出了一个发帖请求,并返回一个简单的响应。
当我尝试将curl请求转换为python请求时(在https://curl.trillworks.com/几乎没有帮助下),我得到ConnectionError编号104,连接被对等方重置。
我强烈怀疑发生这种情况,因为当我首先进行连接vie卷曲时,我得到响应:<HTTP / 1.1 100继续,并且在等待另一个响应的短暂时间后:<HTTP / 1.1 200 OK,带有一些示例数据。 我认为python request.post只是挂在第一个HTTP / 1.1 100上。
我无法使用try处理或重置连接...除了...,都没有成功地使用time.sleep()循环连接。
有任何想法吗?
PS代码:
卷曲命令:
curl "LINK TO SERVER" -H "Content-Type: audio/x-speex;rate=16000" -H "Accept-Language: ENUS" -H "Transfer-Encoding: chunked" -H "Accept: application/xml" -H "Accept-Topic: Dictation" -k --data-binary @audio_16k16bit.pcm
相当于Python:
#!/bin/python
import requests
import time
headers = {
'Content-Type': 'audio/x-wav;codec=pcm;bit=16;rate=16000',
'Accept-Language': 'ENUS',
'Transfer-Encoding': 'chunked',
'Accept': 'application/xml',
'Accept-Topic': 'Dictation',
}
params = (
('appId', ''),
('appKey',''),
('id', ''),
)
data = open('audio_16k16bit.pcm', 'rb').read()
r = requests.post('LINK TO SERVER', headers=headers, data=data, verify=False)
print(r.content)
解
应该删除并让服务器确定文件的类型,这也是因为我们将其发送为不需要分块的一个文件:
'Content-Type': 'audio/x-wav;codec=pcm;bit=16;rate=16000',
'Transfer-Encoding': 'chunked'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.