错误“远程服务器返回错误:(400)错误的请求”

我试图从我们的Windows窗体发送请求到快速预订服务器。但它显示我error.What我能做?.any的帮助将不胜感激。 这里是我试图提出请求的代码:

var oAuthConsumerKey = ""; var oAuthConsumerSecret = ""; var oAuthUrl ="https://quickbooks.api.intuit.com/v3/company/<companyid>/invoice?minorversion=4"; // Do the Authenticate var authHeaderFormat = "Basic {0}"; var authHeader = string.Format(authHeaderFormat,Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConsumerKey) + ":"+Uri.EscapeDataString((oAuthConsumerSecret))) )); string text = System.IO.File.ReadAllText("text file"); // var postBody = "grant_type=client_credentials"; HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create(oAuthUrl); authRequest.Headers.Add("Authorization", authHeader); authRequest.Method = "POST"; authRequest.ContentType = "application/x-www-form-urlencoded"; authRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)"; authRequest.Accept = "/"; authRequest.UseDefaultCredentials = true; authRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; authRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; using (Stream stream = authRequest.GetRequestStream()) { byte[] content = ASCIIEncoding.ASCII.GetBytes(text); stream.Write(content, 0, content.Length); } authRequest.Headers.Add("Accept-Encoding", "gzip"); WebResponse authResponse = authRequest.GetResponse(); 

您正尝试使用HTTP Basic授权访问Intuit的服务:

 var authHeaderFormat = "Basic {0}"; var authHeader = string.Format(authHeaderFormat,Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConsumerKey) + ":"+Uri.EscapeDataString((oAuthConsumerSecret))) )); 

Intuit不支持HTTP Basic身份验证。 Intuit支持OAuth。

你读过文档吗? 从Intuit网站:

QuickBooks API使用OAuth 1.0为应用程序提供对用户QuickBooks公司数据的访问。

您也可以参考这里的官方OAuth规范:

我建议你使用一个已经为你实现所有这些东西的库。 Intuit在他们的网站上链接了几个: