1
Ich versuche, Anfragen an eine API zu stellen. Wenn ich die Anfrage mit Postman gemacht habe, funktioniert es. Aber in C#, es tut nicht, es gibt Fehler 401. Ich überprüft und Login und Passwort sind richtig. Kann mir jemand helfen?C# Fehler 401 - Ungültiger Benutzername oder Passwort
Code:
public JsonResult Test()
{
var document = new HtmlAgilityPack.HtmlDocument();
var password = CalculateMD5Hash("******");
var httpRequest =(HttpWebRequest)WebRequest.Create(string.Format("https://api.akna.com.br/emkt/int/integracao.php?User={0}&Pass={1}&XML={2}",
"[email protected]",
password,
@"<main>
<emkt trans='19.10'>
<datainicial>2016-07-01 10:00:00</datainicial>
<datafinal>2016-07-02 10:00:00</datafinal>
</emkt>
</main>"));
httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded";
try
{
var httpWebResponse = (HttpWebResponse)httpRequest.GetResponse();
var responseStream = httpWebResponse.GetResponseStream();
if (responseStream != null)
{
var sr = new StreamReader(responseStream, Encoding.Default);
document.LoadHtml(sr.ReadToEnd());
}
return Json(new { StatusCode = 200 }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { StatusCode = 500, Erro = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
Nun, wenn es über Postman funktioniert und nicht über C# funktioniert, dann sollten Sie vielleicht den Netzwerkverkehr mit einem Tool wie Fiddler inspizieren und sehen, was der Unterschied ist! – mason
Ich habe Fiddler nie benutzt, ich habe es heruntergeladen, aber meine Anfrage funktioniert nur im Postboten. Die beiden Anfragen scheinen identisch zu sein. Postantrag: [link] (http://imgur.com/12sbyoX) Fiddler-Anfrage: [link] (http://imgur.com/g5oYFC6). Weißt du, was das Problem ist? Vielen Dank! – nill
Schauen Sie sich die rohe Anfrage an. Vergleichen Sie sie genau. Ihrem Dienst ist es egal, welchen Client Sie verwenden, ob es sich um .NET oder Fiddler oder einen CURL-Befehl handelt. Solange es die Anfrage im richtigen Format sieht, sollte es funktionieren. Deshalb müssen Sie den Unterschied erkennen. – mason