嘗試使用摘要式身份驗證與Web服務器(Apache 2.2.17)通信並使用POST方法發送數據時遇到問題:它始終返回401錯誤。但是,如果我們不發佈數據,或者當Fiddler正在運行(即使發佈數據時),它也會運行良好......您是否瞭解可能導致問題的原因?奇怪的HTTP身份驗證問題
public void DoRequest(string v_strURL, XmlDocument v_objXMLDoc)
{
var credentialCache = new CredentialCache();
credentialCache.Add(new Uri("http://" + ServerIP + "/"), "Digest", new NetworkCredential("admin", "test", "realm"));
String RequestContent = "request=" + v_objXMLDoc.InnerXml.Replace(' ', '+');
Uri Url = new Uri(v_strURL);
HttpWebRequest objHttpWebRequest;
HttpWebResponse objHttpWebResponse = null;
Stream objRequestStream = null;
byte[] bytes = new byte[0];
bytes = System.Text.Encoding.UTF8.GetBytes(RequestContent);
objHttpWebRequest = (HttpWebRequest)WebRequest.Create(v_strURL);
objHttpWebRequest.UserAgent = "MySampleCode";
objHttpWebRequest.Credentials = credentialCache;
objHttpWebRequest.Method = "POST";
objHttpWebRequest.ContentLength = bytes.Length;
objHttpWebRequest.ContentType = "text/xml; encoding='utf-8'";
objHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
objRequestStream = objHttpWebRequest.GetRequestStream();
objRequestStream.Write(bytes, 0, bytes.Length);
objRequestStream.Close();
objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse();
}
請出示一些源代碼和 – Yahia
你需要顯示源代碼比較有什麼越過線(有和沒有小提琴手),例如使用Wireshark ...我寫了大量的C#代碼,它們使用HTTP發佈數據並摘要身份驗證,這些身份驗證在生產環境中使用並且沒有問題。因此,無論您的代碼是否存在一些錯誤,或者存在服務器配置問題,沒有示例代碼/更多細節,都無法分辨! – RobV
我會盡快發佈源代碼! – JoRoy