C# 如何使用curl命令

qq_39582586 2018-05-22 09:58:17
大神们,我需要用C#语言去对接接口,对方需要我把curl命令传给他,这种是跟平常的post传参一样还是有特殊的方法?
...全文
1971 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2018-05-24
  • 打赏
  • 举报
回复
为什么一定要用curl,其实curl能完成的功能,通过HttpWebRequest基本也可以完成,毕竟只是发送一个http请求,带不同的参数或者头或者其他什么东西
  • 打赏
  • 举报
回复
引用 12 楼 qq_39582586 的回复:
[quote=引用 11 楼 u012142699 的回复:] 1,你需要下载curl(https://curl.haxx.se/download.html) 2,你可以使用程序执行该命令

using (Process myPro = new Process())
{
    //指定curl存放的路径  
    myPro.StartInfo.FileName = @"C:\curl.exe";
    myPro.StartInfo.UseShellExecute = false;
    myPro.StartInfo.RedirectStandardInput = true;
    myPro.StartInfo.RedirectStandardOutput = true;
    myPro.StartInfo.RedirectStandardError = true;
    myPro.StartInfo.CreateNoWindow = true;
    //该命令(-I)只显示请求头信息
    myPro.StartInfo.Arguments = "-I http://www.baidu.com";
    myPro.Start();
    myPro.StandardInput.AutoFlush = true;

    //获取cmd窗口的输出信息  
    string output = myPro.StandardOutput.ReadToEnd();

    myPro.WaitForExit();
    myPro.Close();

    Console.WriteLine(output);
}
curl.exe 这个文件是下载的吗?[/quote] 需要的。
文盲老顾 2018-05-24
  • 打赏
  • 举报
回复
引用 4 楼 qq_39582586 的回复:
不知道是不是误解了,反正这个接口就是用来在他们平台上创建文件夹而已 请求示例: curl -u 账号:密码 -H "Accept: application/json" -X POST -H "Content-Type: application/x-www-form-urlencoded" -d parentId=父文件夹ID -d path=文件夹名称 这是那边提供的实示例
引用 15 楼 qq_39582586 的回复:
[quote=引用 13 楼 u012142699 的回复:] [quote=引用 12 楼 qq_39582586 的回复:] [quote=引用 11 楼 u012142699 的回复:] 1,你需要下载curl(https://curl.haxx.se/download.html) 2,你可以使用程序执行该命令

using (Process myPro = new Process())
{
    //指定curl存放的路径  
    myPro.StartInfo.FileName = @"C:\curl.exe";
    myPro.StartInfo.UseShellExecute = false;
    myPro.StartInfo.RedirectStandardInput = true;
    myPro.StartInfo.RedirectStandardOutput = true;
    myPro.StartInfo.RedirectStandardError = true;
    myPro.StartInfo.CreateNoWindow = true;
    //该命令(-I)只显示请求头信息
    myPro.StartInfo.Arguments = "-I http://www.baidu.com";
    myPro.Start();
    myPro.StandardInput.AutoFlush = true;

    //获取cmd窗口的输出信息  
    string output = myPro.StandardOutput.ReadToEnd();

    myPro.WaitForExit();
    myPro.Close();

    Console.WriteLine(output);
}
curl.exe 这个文件是下载的吗?[/quote] 需要的。[/quote] 大哥,我结贴给错分了[/quote] 为了避免你说我混分,我就详细说下怎么用 HttpWebRequest 实现你这个需求

//请求示例:
//curl -u 账号:密码 -H "Accept: application/json" -X POST -H "Content-Type: application/x-www-form-urlencoded" -d parentId=父文件夹ID -d path=文件夹名称  
// url 为请求地址,也就是curl指向的地址
HttpWebRequest http = (HttpWebRequest)WebRequest.Create(url);
// -H 表示http请求中需要有一个Header信息
// -H "Accept: application/json"
http.Accept = "application/json";
// -u 账号:密码,提交身份验证信息
http.Headers.Add("Authorization","Basic " + Convert.ToBase64String(Syste.Text.Encoding.UTF8.GetBytes("账号:密码")));
// -X POST 使用 POST 方式请求
http.Method = "POST";
// -d 表示提交的表单中的信息
// -d parentId=父文件夹ID
byte[] pd = null;
string QueryString = "parentId=父文件夹ID"; // 如果有多个 -d ,用 & 拼接每一个参数
pd = new UTF8Encoding().GetBytes(QueryString);
http.ContentLength = pd.Length;
Stream ps = http.GetRequestStream();
ps.Write(pd, 0, pd.Length);  // 将表单请求写入到请求头中
ps.Close();
ps.Dispose();

文盲老顾 2018-05-24
  • 打赏
  • 举报
回复

NetworkCredential networkCredential=new NetworkCredential(UserName,Password);
http.Credentials=networkCredential;
qq_39582586 2018-05-24
  • 打赏
  • 举报
回复
引用 13 楼 u012142699 的回复:
[quote=引用 12 楼 qq_39582586 的回复:] [quote=引用 11 楼 u012142699 的回复:] 1,你需要下载curl(https://curl.haxx.se/download.html) 2,你可以使用程序执行该命令

using (Process myPro = new Process())
{
    //指定curl存放的路径  
    myPro.StartInfo.FileName = @"C:\curl.exe";
    myPro.StartInfo.UseShellExecute = false;
    myPro.StartInfo.RedirectStandardInput = true;
    myPro.StartInfo.RedirectStandardOutput = true;
    myPro.StartInfo.RedirectStandardError = true;
    myPro.StartInfo.CreateNoWindow = true;
    //该命令(-I)只显示请求头信息
    myPro.StartInfo.Arguments = "-I http://www.baidu.com";
    myPro.Start();
    myPro.StandardInput.AutoFlush = true;

    //获取cmd窗口的输出信息  
    string output = myPro.StandardOutput.ReadToEnd();

    myPro.WaitForExit();
    myPro.Close();

    Console.WriteLine(output);
}
curl.exe 这个文件是下载的吗?[/quote] 需要的。[/quote] 大哥,我结贴给错分了
  • 打赏
  • 举报
回复
1,你需要下载curl(https://curl.haxx.se/download.html) 2,你可以使用程序执行该命令

using (Process myPro = new Process())
{
    //指定curl存放的路径  
    myPro.StartInfo.FileName = @"C:\curl.exe";
    myPro.StartInfo.UseShellExecute = false;
    myPro.StartInfo.RedirectStandardInput = true;
    myPro.StartInfo.RedirectStandardOutput = true;
    myPro.StartInfo.RedirectStandardError = true;
    myPro.StartInfo.CreateNoWindow = true;
    //该命令(-I)只显示请求头信息
    myPro.StartInfo.Arguments = "-I http://www.baidu.com";
    myPro.Start();
    myPro.StandardInput.AutoFlush = true;

    //获取cmd窗口的输出信息  
    string output = myPro.StandardOutput.ReadToEnd();

    myPro.WaitForExit();
    myPro.Close();

    Console.WriteLine(output);
}
qq_39582586 2018-05-23
  • 打赏
  • 举报
回复
有没有大神知道怎么在C#中执行curl命令啊!
qq_39582586 2018-05-23
  • 打赏
  • 举报
回复
引用 8 楼 u012142699 的回复:
不一样情况有多种,一般都是编码不一致所致。 比对下你传入的和对方获取的,然后使用合适的编码转码后再传递,多配合几次就一致了。
我搞清楚了,那边是需要我执行curl命令创建文件夹,大神,怎么在C#中执行curl命令啊
qq_39582586 2018-05-23
  • 打赏
  • 举报
回复
引用 11 楼 u012142699 的回复:
1,你需要下载curl(https://curl.haxx.se/download.html) 2,你可以使用程序执行该命令

using (Process myPro = new Process())
{
    //指定curl存放的路径  
    myPro.StartInfo.FileName = @"C:\curl.exe";
    myPro.StartInfo.UseShellExecute = false;
    myPro.StartInfo.RedirectStandardInput = true;
    myPro.StartInfo.RedirectStandardOutput = true;
    myPro.StartInfo.RedirectStandardError = true;
    myPro.StartInfo.CreateNoWindow = true;
    //该命令(-I)只显示请求头信息
    myPro.StartInfo.Arguments = "-I http://www.baidu.com";
    myPro.Start();
    myPro.StandardInput.AutoFlush = true;

    //获取cmd窗口的输出信息  
    string output = myPro.StandardOutput.ReadToEnd();

    myPro.WaitForExit();
    myPro.Close();

    Console.WriteLine(output);
}
curl.exe 这个文件是下载的吗?
  • 打赏
  • 举报
回复
不一样情况有多种,一般都是编码不一致所致。 比对下你传入的和对方获取的,然后使用合适的编码转码后再传递,多配合几次就一致了。
qq_39582586 2018-05-22
  • 打赏
  • 举报
回复
引用 6 楼 u012142699 的回复:
1,是需要你在你服务器执行该命令? 2,是将命令组装好作为参数传递过去他们执行? 如果是1需要你执行。那么你需要额外才能支持该命令(https://curl.haxx.se/download.html)windows原生不支持,这样的话你需要通过程序调用执行命令行。 如果是2只需要组装就OK。
是将命令组装好作为参数传递过去,但是我这边组装好传过去,那边接收到的跟我传过去的不一样。
  • 打赏
  • 举报
回复
1,是需要你在你服务器执行该命令? 2,是将命令组装好作为参数传递过去他们执行? 如果是1需要你执行。那么你需要额外才能支持该命令(https://curl.haxx.se/download.html)windows原生不支持,这样的话你需要通过程序调用执行命令行。 如果是2只需要组装就OK。
qq_39582586 2018-05-22
  • 打赏
  • 举报
回复
引用 3 楼 u012142699 的回复:
我感觉你有可能误解别人的意思了! curl 是利用URL规则在命令行下工作的文件传输工具,例如: 有些开放平台,习惯用该命令来做伪代码,告知请求方如何调用指定接口。
不知道是不是误解了,反正这个接口就是用来在他们平台上创建文件夹而已 请求示例: curl -u 账号:密码 -H "Accept: application/json" -X POST -H "Content-Type: application/x-www-form-urlencoded" -d parentId=父文件夹ID -d path=文件夹名称 这是那边提供的实示例
qq_39582586 2018-05-22
  • 打赏
  • 举报
回复
不知道是不是误解了,反正这个接口就是用来在他们平台上创建文件夹而已 请求示例: curl -u 账号:密码 -H "Accept: application/json" -X POST -H "Content-Type: application/x-www-form-urlencoded" -d parentId=父文件夹ID -d path=文件夹名称 这是那边提供的实示例
  • 打赏
  • 举报
回复
我感觉你有可能误解别人的意思了!
curl 是利用URL规则在命令行下工作的文件传输工具,例如:

有些开放平台,习惯用该命令来做伪代码,告知请求方如何调用指定接口。
sprints_昊天 2018-05-22
  • 打赏
  • 举报
回复
这个我也不太了解
sprints_昊天 2018-05-22
  • 打赏
  • 举报
回复
https://zhidao.baidu.com/question/552246331.html 看看这个

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧