2016-08-01 126 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

回答

相关问题