Error “The remote server returned an error: (400) Bad Request”
Error “The remote server returned an error: (400) Bad Request”
我正在尝试将我们的 windows 表单中的请求发送到快速预订 server.But 它告诉我 error.What 我可以做什么吗?如有任何帮助,我们将不胜感激。
这是我尝试发出请求的代码:
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 网站:
The QuickBooks API uses OAuth 1.0 to give apps access to data in a
user's QuickBooks company.
您也可以在这里参考官方 OAuth 规范:
我建议您使用已经为您实现了所有这些功能的库。 Intuit 在他们的网站上链接了几个:
我正在尝试将我们的 windows 表单中的请求发送到快速预订 server.But 它告诉我 error.What 我可以做什么吗?如有任何帮助,我们将不胜感激。 这是我尝试发出请求的代码:
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 网站:
The QuickBooks API uses OAuth 1.0 to give apps access to data in a user's QuickBooks company.
您也可以在这里参考官方 OAuth 规范:
我建议您使用已经为您实现了所有这些功能的库。 Intuit 在他们的网站上链接了几个: