我正在尝试将以下xml发布到https://apps.quickbooks.com/j/AppGateway,我不断得到的是错误:远程服务器返回错误:(400)错误请求。有没有人有任何想法我做错了什么?请参阅下面的我用于发布xml的C#代码。
谢谢, -Jeff
更新:为了在我的问题中添加更多内容,我认为(400)错误请求错误表明我有一些严重错误的xml或我发布xml的方式。所以这就是我问这个问题的原因......我在这里错过了什么?
<?xml version="1.0" encoding="utf-8" ?>
<?qbxml version="7.0"?>
<QBXML>
<SignonMsgsRq>
<SignonDesktopRq>
<ClientDateTime>7/20/2009 12:36PM</ClientDateTime>
<ApplicationLogin>APP_LOGIN</ApplicationLogin>
<ConnectionTicket>CONNECTION_TICKET</ConnectionTicket>
<Language>English</Language>
<AppID>APP_ID</AppID>
<AppVer>1</AppVer>
</SignonDesktopRq>
</SignonMsgsRq>
<QBXMLMsgsRq>
<CustomerQueryRq requestID="2" />
</QBXMLMsgsRq>
</QBXML>
WebRequestObject = (HttpWebRequest)WebRequest.Create(requestUrl);
WebRequestObject.Method = "POST";
WebRequestObject.ContentType = "application/x-qbxml";
WebRequestObject.AllowAutoRedirect = false;
string post = XmlText.Text;
WebRequestObject.ContentLength = post.Length;
swr = new StreamWriter(WebRequestObject.GetRequestStream());
swr.Write(post);
swr.Close();
WebResponseObject = (HttpWebResponse)WebRequestObject.GetResponse();
答案 0 :(得分:1)
将qbXML版本更改为6.0,QuickBooks Online Edition尚不支持7.0。
答案 1 :(得分:0)
请求中发布的xml在哪里?或者您缺少在此处粘贴一些代码。我没有在上面的代码中看到请求中包含XML。请求很糟糕,因为请求不包含XML。至少从我上面看到的
答案 2 :(得分:0)
作为Keith Palmer mentioned in his answer,版本号必须为6.0,但还需要包含QBXMLMsgsRq标记的onError属性。 (我也按照Keith Palmer的推荐更正了时间格式。)
完成/工作xml在这里:
<?xml version="1.0" encoding="utf-8" ?>
<?qbxml version="6.0"?>
<QBXML>
<SignonMsgsRq>
<SignonDesktopRq>
<ClientDateTime>2009-07-21T10:10:00</ClientDateTime>
<ApplicationLogin>APPLICATION_LOGIN</ApplicationLogin>
<ConnectionTicket>CONNECTION_TICKET</ConnectionTicket>
<Language>English</Language>
<AppID>APP_ID</AppID>
<AppVer>1</AppVer>
</SignonDesktopRq>
</SignonMsgsRq>
<QBXMLMsgsRq onError="continueOnError">
<CustomerQueryRq requestID="2" />
</QBXMLMsgsRq>
</QBXML>
答案 3 :(得分:0)
您可以在此站点获取客户查询的XML:
选择CustomerQuery作为消息。使用Chrome是因为它无法在所有浏览器中使用。单击XmlOps,您将看到XML。
另一方面,我在这里有一个商业解决方案: