在 URL 中传入用户名和密码凭据的 curl 命令是否可以在 C# 程序/.net 环境中工作

本文关键字:是否 工作 环境 net 命令 程序 用户 URL 密码 curl | 更新日期: 2023-09-27 17:56:55

在URL中传入用户名和密码凭据的curl命令是否可以在C#程序/.net环境中工作?

例:curl -T 测试文件.txt 'http://user:password@domain.net/dir/

C# .net 环境中的 Curl 命令等效项是什么?

我最初的问题始于尝试将文件更新到 webdav 服务器。我尝试使用C#Webclient和httpwebrequest......并不断收到 401 自动错误,即使凭据位于请求的实际标头中。

当我在 unix 环境中使用 Curl 时,上传文件没有问题。

我不确定问题是否出在 HttpWebrequest 所做的重定向上:

网络客户端 重定向时如何保留基本授权

那就是:

401 - 身份验证错误 - 标头中没有用户名和密码

然后 - 301 重定向 - 这包括标头中的用户名和密码

在 URL 中传入用户名和密码凭据的 curl 命令是否可以在 C# 程序/.net 环境中工作

请尝试以下代码...它将帮助您...

string fileToUpload = @"c:'testfile.txt";
FileStream rdr = new FileStream(fileToUpload, FileMode.Open);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/Upload"); 
req.PreAuthenticate = true;
req.Credentials = new NetworkCredential ("username", "password");
req.Method = "POST"; 
req.ContentLength = rdr.Length;
req.AllowWriteStreamBuffering = true;
Stream reqStream = req.GetRequestStream();
Console.WriteLine(rdr.Length);                
byte[] inData = new byte[rdr.Length];
// Get data from upload file to inData 
int bytesRead = rdr.Read(inData, 0, (int)rdr.Length);
// put data into request stream
reqStream.Write(inData, 0, (int)rdr.Length);
rdr.Close();
req.GetResponse();
// after uploading close stream 
reqStream.Close();