这是一个通用的cURL命令,用于将csv文件从服务器复制到c:\ temp。
curl.exe --data“ ARG1 = value&ARG2 = value”“ https://some.server.com/data.csv”>“ c:\ temp \ data.csv”
您如何使用post方法和TLS 1.2在C#中将此代码编码为同步方法?
答案 0 :(得分:0)
byte[] data;
using (WebClient client = new WebClient()) {
data = client.DownloadData("https://some.server.com/data.csv?arg1=value&ARG2=value");
}
File.WriteAllBytes(@"c:\temp\data.csv", data);
答案 1 :(得分:0)
经过一番摆弄后发现这可行:
using System.Net.Http;
...
var values = new Dictionary<string, string>() { { "arg1", "value1" }, { "arg2", "value2" } };
var content = new FormUrlEncodedContent(values);
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; // enable TLS 1.2
HttpResponseMessage responseMsg = new HttpClient().PostAsync(@"http://some.server.com/data.csv", content).Result;
if (responseMsg.StatusCode != System.Net.HttpStatusCode.OK) throw new Exception("err msg");
File.WriteAllText(@"c:\temp\data.csv", responseMsg.Content.ReadAsStringAsync().Result);
...
此代码对我有用(我无法显示实际站点)。有问题的站点是一个数据供应商,曾经接受简单的HTTP GET请求,但现在为了遵守EU规则而改用SSL和TSL 1.2进行POST。
我并不是说这段代码是健壮的,线程安全的或类似的东西。只是我让它工作了。所以这是一个开始。