我试图使用HttpWebRequest(控制台应用程序)调用Web API。
要上传文件,我使用的是@Cristian Romanescu在此问题上提供的代码段 Upload files with HTTPWebrequest (multipart/form-data)
如果我将req.ProtocolVersion设置为HttpVersion.Version10,当我尝试执行req.GetResponseStream()时,我收到Bad请求。
如果我将req.ProtocolVersion设置为HttpVersion.Version11,当我尝试执行req.GetResponseStream()时,我得无法创建SSL / TLS安全通道。。/ p>
如果尝试使用POSTMAN发布数据,但即使Postman说无法得到任何回复“。
如果我尝试使用IE-11点击URL,我会收到HTTP 404. [我知道我没有发布实际文件],但Chrome会显示自定义/相应的错误消息。
我尝试了stackoverflow上已经提供的解决方案,但遗憾的是它们无法解决我的问题。
三江源。
答案 0 :(得分:3)
您尝试过哪种解决方案?如果您还没有 - 在实际调用服务之前编写以下内容,则值得尝试以下内容:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
答案 1 :(得分:1)
我做错了两件事。
服务器希望日期在yyyy-MM-ddTHH:mm:ss,我在yyyy-MM-ddTHH中提供日期:mm:ss.ssss格式(DateTime.UtcNow.ToString(“o”) )。这是无法创建SSL / TLS安全通道
服务器也想要请求体中的参数。我只将参数作为查询字符串传递。这是HTTP 404的原因
在此过程中,我曾要求团队外的人帮忙。他让我看看是否有任何与SSL相关的错误。要做到这一点,他让我补充说
System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
并定义AcceptAllCertifications
,但事实并非如此。所以为了解决这个问题,我必须处理上面提到的事情。
答案 2 :(得分:0)
尝试从服务器创建自签名证书并将其添加到客户端计算机。