Problems with C# HTTP Post with Authentication
我正在尝试通过HTTP Post发送一些XML。 但是我得到了
这是我的方法签名:
1 2 | internal static string Send(string URL, string XMLdata, string RequestMethod, string RequestUsername, string RequestPassword) |
我已经尝试将此作为方法主体:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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; |
还有这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; |
两者都得到
到目前为止,我对该主题的阅读:
- C#中的HttpClient和表单身份验证
- 使用HttpWebRequest登录到页面
- HTTP POST返回错误:417"预期失败。"
- HTTP Post XML文档-服务器仅接收第一行
- POST到HTTPS身份验证错误
- Http发布请求消息正文中的C#Xml
感谢您的帮助。
我解决了实际上,提供商误导了我,使URL出错。如果有人遇到此问题,我发布我的答案的理由是供将来参考。
提供商通过电子邮件向我发送了URL
令我震惊的是,通过访问HTTP URL,我没有得到
当我将代码中的URL更改为HTTPS时,授权与我发布的两个代码一起使用。
花了几个小时...但是,当您学习经验的时候,没有时间会浪费时间。
[根据OP的要求,我正在将评论迁移到答案]
根据您的描述,我没有任何答案,但是我有一个建议:无论浏览器请求成功还是编程请求失败,都可以使用Fiddler查看请求和响应的外观。我怀疑会有所不同。