在 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 重定向 - 这包括标头中的用户名和密码
请尝试以下代码...它将帮助您...
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();