0

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

示例: curl -T testfile.txt ' http://user:password@domain.net/dir/

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

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

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

我不确定问题是否与 HttpWebrequest 所做的重定向有关:

webclient如何在重定向时保持基本授权

那是:

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

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

4

1 回答 1

0

试试下面的代码......它会帮助你......

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(); 
于 2013-02-01T14:54:20.177 回答