gpt4 book ai didi

c# - 带有身份验证的 C# HTTP Post 的问题

转载 作者:可可西里 更新时间:2023-11-01 17:14:37 26 4
gpt4 key购买 nike

我正在尝试通过 HTTP Post 发送一些 XML。但是我收到 401 Unauthorized。有趣的是,当我通过浏览器访问 URL 时,我提供的用户名/密码是可以的。

这是我的方法签名:

        internal static string Send(string URL, string XMLdata, string RequestMethod, 
string RequestUsername, string RequestPassword)

我试过这个作为方法体:

        string requestData = XMLdata;
string responseData = "";

StreamWriter myWriter = null;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(URL);

objRequest.Method = RequestMethod;
objRequest.PreAuthenticate = true;
objRequest.ContentType = "application/x-www-form-urlencoded";//"text/xml";
objRequest.Credentials = new NetworkCredential(RequestUsername, RequestPassword);;
objRequest.ContentLength = requestData.Length;

try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(requestData);
}
finally
{
myWriter.Close();
}

StreamReader sr = null;

try
{
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
sr = new StreamReader(objResponse.GetResponseStream());
responseData = sr.ReadToEnd();
}
finally
{
if (sr != null)
sr.Close();
}

return responseData;

还有这个:

        string result;

using (var client = new WebClient())
{
Uri requestUri = new Uri(URL);
CredentialCache cache = new CredentialCache();
NetworkCredential nc = new NetworkCredential(RequestUsername, RequestPassword);
cache.Add(requestUri, "Basic", nc);
client.Credentials = cache;

result = client.UploadString(requestUri, XMLdata);
}

return result;

两者都得到 401。我究竟做错了什么?提醒一下:当我通过浏览器访问 URL 时,它会提示输入用户名/密码,我提供的凭据就可以了。

到目前为止我对这个主题的阅读:

感谢您的帮助。

最佳答案

[应 OP 的要求,我正在将我的评论迁移到答案]

根据你的描述,我没有给你答案,但我有一个建议:使用 Fiddler查看请求和响应的外观,无论是浏览器请求成功还是编程请求失败。我怀疑您会突然发现不同之处。

关于c# - 带有身份验证的 C# HTTP Post 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com