我正在尝试找到一种将 curl 命令传输到 C# 的方法。
我需要的是从api获取 token 并将其保存到文件C:\...\x.json\
然后我想将 token 声明为变量,并将其用于另一个 curl POST 请求以获取数据以与它们一起使用。
curl :
curl -X POST "https://example.com"
-H "accept: application/json"
-H "Content-Type: application/json"
-d {"username":"username","password":"password"}
我目前的尝试:
static void Main(string[] args)
{
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://example.com"))
{
request.Headers.TryAddWithoutValidation("Accept", "application/json");
request.Content = new StringContent("{\"username\":\"username\",\"password\":\"password\"}", Encoding.UTF8, "application/json");
var response = await httpClient.SendAsync(request);
}
}
}
我尝试了几种方法,但没有一种起作用。这个来自 curl.olsh.me,但我也遇到了一些等待错误,我不知道如何处理它。 (我是 C# 的新手):
The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.
curl -v 输出:
- 正在尝试 10.0.0.0...
- 设置 TCP_NODELAY
- 连接到 example.com (10.0.0.0) 端口 443 (#0)
- ALPN,提供 h2
- ALPN,提供 http/1.1
- 成功设置证书验证位置:
- CA 文件:C:\Users\lvrabel\Downloads\curl-7.60.0-win64-mingw\curl-7.60.0-win64-mingw\bin\curl-ca-bundle.crt CA路径:无
- TLSv1.2 (OUT),TLS 握手,客户端问候 (1):
- TLSv1.2 (IN)、TLS 握手、服务器问候 (2):
- TLSv1.2 (IN),TLS 握手,证书 (11):
- TLSv1.2 (IN)、TLS 握手、服务器 key 交换 (12):
- TLSv1.2 (IN),TLS 握手,服务器完成 (14):
- TLSv1.2 (OUT)、TLS 握手、客户端 key 交换 (16):
- TLSv1.2 (OUT),TLS 更改密码,客户端问候 (1):
- TLSv1.2 (OUT),TLS 握手,完成 (20):
- TLSv1.2 (IN),TLS 握手,完成 (20):
- 使用 TLSv1.2/ECDHE-RSA-AES128-GCM-SHA256 的 SSL 连接
- ALPN,服务器不同意协议(protocol)
- 服务器证书:
- 主题:OU=域控制已验证; OU=PositiveSSL 通配符; CN=*.example.com
- 开始日期:格林威治标准时间 2016 年 12 月 1 日 00:00:00
- 到期日:格林威治标准时间 2019 年 12 月 1 日 23:59:59
- subjectAltName:主机“example.com”匹配证书的“*.example.com”
- 发行人:C=GB; ST=大曼彻斯特; L= Solr 福德; O=COMODO CA 有限公司; CN=COMODO RSA 域验证安全服务器
- SSL 证书验证正常。 < POST/cxf/IOTServices/v2/Login HTTP/1.1 < 主机:example.com < 用户代理:curl/7.60.0 <接受:应用程序/json < 内容类型:application/json < 内容长度:64 <
- 上传完全发送:64 字节中的 64 字节 < HTTP/1.1 200 正常 < 日期:2018 年 9 月 24 日星期一 09:22:30 GMT < 内容类型:application/json < 日期:2018 年 9 月 24 日星期一 09:22:31 GMT <连接:关闭 < 设置 Cookie:TS0119a36f=015d568915873c94e852616fd92d5dd7a03a620f3cd2326781154684dfd7b31302f6fcb9822598d5a76466d0c6a25583fccbb30c7d;路径=/;域名=.example.com < 传输编码:分块 < {"code":200,"status":"success","sessionId":"5cd92d80-bfdb-11e8-83c7-5b742f0c1244"}* 关闭连接 0
- TLSv1.2 (OUT)、TLS 警报、客户端问候 (1):
最佳答案
使用本网站 https://curl.olsh.me/
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://example.com/"))
{
request.Headers.TryAddWithoutValidation("Accept", "application/json");
request.Content = new StringContent("{\"username\":\"username\",\"password\":\"password\"}", Encoding.UTF8, "application/json");
var response = await httpClient.SendAsync(request);
}
}
关于c# - 将 POST curl 到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52443196/