2016-08-01 94 views
1

我正在嘗試向API發出請求。 當我使用郵遞員提出請求時,它可以工作。但在C#中,它不會,它會返回錯誤401. 我檢查並登錄和密碼是正確的。 任何人都可以幫助我嗎?C#錯誤401 - 無效的用戶名或密碼


代碼:

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

那麼,如果它通過Postman工作,並且不能通過C#工作,那麼也許你應該使用像Fiddler這樣的工具檢查網絡流量,看看有什麼區別! – mason

+0

我從來沒有使用過提琴手,我下載了它,但我的請求只適用於郵遞員。這兩個請求似乎是相同的。郵遞員請求:[鏈接](http://imgur.com/12sbyoX)提琴手請求:[鏈接](http://imgur.com/g5oYFC6)。你知道什麼是問題嗎?謝謝! – nill

+0

看看原始請求。仔細比較它們。他們的服務並不關心你使用的客戶端,無論是.NET還是Fiddler或CURL命令。只要它以正確的格式看到請求,它就可以工作。這就是爲什麼你需要發現差異。 – mason

回答

相關問題