摘要身份验证不返回c中的XML结果XML#

2021-12-01 11:24:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将Python脚本转换为C,但遇到了一个问题

python脚本使用HTTPDigestAuth对API的进行身份验证

r = requests.get(apiUrl,auth=HTTPDigestAuth(apiuser, apipass))

我在C中尝试了以下方法,但是当我在调用后查看其显示为DENY的头文件时,它显然没有正确地进行身份验证,但是在Python中完全相同的凭据工作得很好

下面是我正在尝试的代码

string url = "www.test.com";

string UserName = "xx";
string Password = "L12312321312";

NetworkCredential wrCred = new NetworkCredential(UserName, Password);

WebRequest myWebRequest = WebRequest.Create(url);
myWebRequest.Method = "GET";
myWebRequest.Credentials = wrCred;
myWebRequest.PreAuthenticate = true;

//Get Reponse
WebResponse myWebResponse = myWebRequest.GetResponse();

//Data stream
Stream dataStream = myWebResponse.GetResponseStream();

// Open the stream using a StreamReader for easy access.  
StreamReader reader = new StreamReader(dataStream);

// Read the content.  
string responseFromServer = reader.ReadToEnd();

//Check
MessageBox.Show(myWebResponse.Headers.ToString());

reader.Close();
myWebResponse.Close();

如果我改变python脚本而使用basic auth(如下所示),那么我是否遗漏了一些东西,因为标题结果与我更改python脚本而使用basic auth是一样的,所以它不使用Digest auth而只是默认为basic

r = requests.get(apiUrl,auth=HTTPBasicAuth(apiuser, apipass))

如果我返回webresponse的状态码,它会返回OK,但不会再次返回正文或内容,这使我认为它没有使用Digest Auth