我正在尝试将curl命令重写为python。这个想法如下:我们上传一个音频文件,并以文本形式回复它所说的内容 - 例如演讲到文本。
该网站为我们提供了一个curl示例,它会发布一个帖子请求,并作为回报接收一个简单的响应。
当我尝试将curl请求转换为python请求时(https://curl.trillworks.com/没有帮助)我得到ConnectionError号104,连接由peer重置。
我强烈怀疑发生这种情况是因为当我首先通过curl建立连接时,我得到了响应:< HTTP / 1.1 100继续,并在等待另一个响应的短暂时间后:< HTTP / 1.1 200 OK,带有一些示例数据。我认为python的request.post只挂在第一个HTTP / 1.1 100上。
我无法使用try ...处理或重置连接,除了...,没有成功使用time.sleep()循环它。
有什么想法吗?
P.S。代码:
卷曲命令:
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)
答案 0 :(得分:0)
解
应该删除并让服务器确定文件的类型,因为我们将它作为一个文件发送,不需要chunked:
'Content-Type': 'audio/x-wav;codec=pcm;bit=16;rate=16000',
'Transfer-Encoding': 'chunked'