2016-08-01 13 views
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); 
} 
} 
+0

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

+0

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

+0

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

Antwort

Verwandte Themen