gpt4 book ai didi

c# - 将 HttpWebRequest 发送到 HTTPS REST 服务

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:35 25 4
gpt4 key购买 nike

我正在尝试向受 HTTPS 保护的 REST 服务发送 JSON 请求。客户解释说 REST 服务使用的是自签名证书。他还解释说这是一项开发服务,我应该忽略任何证书警告。 (该服务在我们办公室的 RaspberryPi 上运行)

他向我转发了以下 CURL 请求以证明其有效:

curl -k -H "Content-Type: application/json" -X POST -d '{"MerchantReference":"[removed]",
"Command":"Debit", "Amount":5500,"DeviceSerialNumber":"[removed]"}' https://[removed]

当我与 Putty 建立连接并运行它时,我会收到响应,所以一切正常。但是当我用 C# 编写一个应用程序来执行此操作时,出现以下异常:“基础连接已关闭:发送时发生意外错误。”内部异常是:“身份验证失败,因为远程方已关闭传输流。”

这是我的 C# 代码:

var tempRequest = @"{""MerchantReference"":""[removed]"",""Command"":""Debit"",
""Amount"":5500,""DeviceSerialNumber"":""[removed]""}";

HttpWebRequest webRequest = WebRequest.Create(HttpAddress) as HttpWebRequest;
webRequest.Method = WebRequestMethods.Http.Post;
webRequest.ContentType = "application/json";

byte[] buffer = Encoding.UTF8.GetBytes(tempRequest);
Stream postData = webRequest.GetRequestStream();
postData.Write(buffer, 0, buffer.Length);
postData.Close();

var webResponse = webRequest.GetResponse(); // The exception occurred here

我在应用程序开始时向 ServicePointManager.ServerCertificateValidationCallback 添加了回调以仅接受任何证书,但执行甚至没有到达该部分。

所以我的问题是如何在 C# 中复制 CURL 结果。

如有任何帮助,我们将不胜感激。

最佳答案

我发现了问题。使用 TLS v1.2,我们使用的是 .Net 4.0,它只支持最高 TLS V1.0。我们要么升级到 .Net 4.5,要么使用不同版本的 TLS。

关于c# - 将 HttpWebRequest 发送到 HTTPS REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com