当前位置: 首页 > 知识库问答 >
问题:

发送请求时出错

唐高朗
2023-03-14

我想向soap请求发送XML,我使用python请求,如下所示:

response = requests.post(url, data=body, headers=headers)

当我发送请求时,我会发出以下请求:

requests.exceptions.SSLError: HTTPSConnectionPool(host='49.1.92.38', port=7911): Max retries exceeded with url: /ECARE/CRMInterface_INV_Services (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))

我在这样的请求中进行验证=False

response = requests.post(url, data=body, headers=headers, verify=False)

我给出了一些错误,比如你不能发送这样的请求。

我意识到我必须发送带有此请求的证书才能获得成功响应

我有<代码>。cer和。crt文件发送,但我这样发送:

response = requests.post(url, data=body, headers=headers, cert=(c1, c2))

并得到以下错误:

OpenSSL.SSL.Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_PrivateKey_file', 'PEM lib')]

更新:

我在PK中使用openssl x509-inform der。cer-输出PK。pem并尝试以下操作:

response = requests.post(url, data=body, headers=headers, verify='PK.pem')

但这次我犯了一个错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='49.1.92.38', port=7911): Max retries exceeded with url: /ECARE/CRMInterface_INV_Services (Caused by SSLError(CertificateError("hostname '49.1.92.38' doesn't match 'crm.at.com'",),))

我想用这个证书文件发送这个soap请求,但我找不到任何有帮助的东西。有人能帮我吗?

关于。

共有1个答案

别俊誉
2023-03-14

这里有几个问题:

... 证书验证失败。。。

response = requests.post(url, data=body, headers=headers, verify=False)

我给出了一些错误,比如你不能发送这样的请求

首先,设置verify=False是个坏主意,因为这会完全禁用证书验证(即不安全)。尽管如此,您现在不会收到SSL错误,但会收到另一个错误。这意味着它成功地进行了SSL握手(没有证书验证)

您看到的错误可能是因为服务器不喜欢您的请求。由于不知道服务器实际想要什么以及您发送了什么,因此无法说您在这里做错了什么。

response = requests.post(url, data=body, headers=headers, cert=(c1, c2))

并得到以下错误:

OpenSSL.SSL.Error: [('PEM routines', 'PEM_read_bio', 'no start line'), ('SSL routines', 'SSL_CTX_use_PrivateKey_file', 'PEM lib')]

这是因为您使用了cert参数,该参数有明确的文档记录,用于客户端证书,即证书和匹配的私钥。它看起来不像你这样的客户端证书。我不确定您尝试使用的文件的内容是什么(“我有.cer和.crt文件”没有说明内容),但如果您尝试将这些文件用作CA,则需要使用verify参数。

 类似资料:
  • 我正在尝试使用ajax发送post请求,但始终出现以下错误: XMLHttpRequest无法加载http://192.168.1.123:8080。对预检请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制允许源”标头。因此不允许访问源“http://localhost:8080”。 这是我的代码

  • 发送请求 发送同步请求 Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send(); String clientVersion = web3Client

  • 我有这个代码: 我一直在犯这样的错误: java:不兼容的类型:com。应用句子分类请求。无法将生成器转换为com。应用句子分类请求 我已经使用Maven插件生成了gRPC Java文件。在看了多个例子后,我不确定我的问题是什么。

  • 我正在学习春靴和反应现在。 book.js bookresourceimp.java

  • 很多时候我们需要在页面打开的时候,读取远程的内容,然后在当前页面显示. 这就需要用到 http请求了. vue页面调用http请求 vuejs 内置了对发送http请求的支持. 只需要在对应页面的script 标签内加上对应的代码就好. 例如: 我们新增一个页面,叫 "博客列表页" : src/components/BlogList.vue, 内容如下: <template> <div >

  • 交互过程中,发送请求是第一步。那么,我们将如何构造一个请求呢? 这一章节,我们将一步一步来构建一个 Ajax 请求。学习本节,你将学会: 如何通过 XMLHttpRequest 和 ActiveXObject 来构造一个通用的 xhr 对象。 如何通过 xhr 对象来发送 GET、 POST 等请求。 Content-type 在 Ajax 数据发送中的作用。 那么,接下来让我们进入本节的学习吧。