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);
}
}
那么,如果它通过Postman工作,并且不能通过C#工作,那么也许你应该使用像Fiddler这样的工具检查网络流量,看看有什么区别! – mason
我从来没有使用过提琴手,我下载了它,但我的请求只适用于邮递员。这两个请求似乎是相同的。邮递员请求:[链接](http://imgur.com/12sbyoX)提琴手请求:[链接](http://imgur.com/g5oYFC6)。你知道什么是问题吗?谢谢! – nill
看看原始请求。仔细比较它们。他们的服务并不关心你使用的客户端,无论是.NET还是Fiddler或CURL命令。只要它以正确的格式看到请求,它就可以工作。这就是为什么你需要发现差异。 – mason