現有一個https的post請求,需要客戶端證書驗證,通過CURL命令已post成功,想轉成c# httpwebrequest進行請求,一直沒有成功,請教各位大神應該如何實作?
CURL命令如下:
curl -X POST -F data_src=https://bbs.csdn.net/topics/FOX -F cmd=sendResultDetails -F cmd_data=檔案地址 https://XXX --cacert c:/*.chain.pem --key c:/*privatekey.key --cert c:/*.cert.pem
部分C#代碼
ServicePointManager.Expect100Continue = true;
ServicePointManager.DefaultConnectionLimit = 9999;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//設定驗證回呼(總是同意)
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);//完整的請求地址(ip:埠號/+url)
//X509證書
X509Certificate2 cert = new X509Certificate2(CerPath, private_key, X509KeyStorageFlags.DefaultKeySet | X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
//X509Certificate2 cacert = new X509Certificate2(CACerPath);
myRequest.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
myRequest.Method = "POST";
myRequest.ContentType = "application/json;charset=\"utf-8\"";
myRequest.Accept = "application/json";
//myRequest.UseDefaultCredentials = true;
myRequest.KeepAlive = true;
myRequest.ContentLength = data.Length;
myRequest.ClientCertificates.Add(cert);//把證書添加進http請求中
//myRequest.ClientCertificates.Add(cacert);
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
// Get response
var response = (HttpWebResponse)myRequest.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
{
string result = reader.ReadToEnd();
reader.Close();
response.Close();
return result;
}
uj5u.com熱心網友回復:
回傳的狀態碼是多少。https://blog.csdn.net/qiaohuyue/article/details/96124416
可以參考。 HttpClient 的。
uj5u.com熱心網友回復:
curl -X POST -F data_src=https://bbs.csdn.net/topics/FOX -F cmd=sendResultDetails ...你的curl命令在做multipart posting。
卻沒有看到你c#代碼有做multipart/form-data。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/116293.html
標籤:C#
下一篇:C#Windows表單播放器
