quickbooks - Quickbook 网络连接器 : QBWC1042: ReceiveResponseXML failed Error message: The request failed with HTTP status 413: Request Entity Too Large

标签 quickbooks

当我尝试从 WCF 发送 [qbxml 请求][1] 时出现异常...我正在使用 Web 连接器从 wcf 服务发送 qbxml 请求到快速预订桌面以获取报告摘要并使用 GeneralDetailReportQueryRq 查询 xml .但是获取“QBWC1042:ReceiveResponseXML 失败 错误消息:请求失败,HTTP 状态为 413:请求实体太大”Web 连接器上的错误消息,并已检查日志并在详细日志中发现所有响应,但 Web 连接器显示 [1]“QBWC1042:ReceiveResponseXML 失败”。

这是qbxml请求

 <?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="13.0"?>
<QBXML>
   <QBXMLMsgsRq onError="continueOnError">
      <GeneralDetailReportQueryRq>
         <GeneralDetailReportType>OpenInvoices</GeneralDetailReportType>
         <ReportDateMacro>Today</ReportDateMacro>
         <IncludeColumn>TxnID</IncludeColumn>
         <IncludeColumn>TxnNumber</IncludeColumn>
         <IncludeColumn>RefNumber</IncludeColumn>
         <IncludeColumn>Name</IncludeColumn>
         <IncludeColumn>TxnType</IncludeColumn>
         <IncludeColumn>Date</IncludeColumn>
         <IncludeColumn>Account</IncludeColumn>
         <IncludeColumn>Aging</IncludeColumn>
         <IncludeColumn>Amount</IncludeColumn>
         <IncludeColumn>OpenBalance</IncludeColumn>
         <IncludeColumn>RunningBalance</IncludeColumn>
         <IncludeColumn>Terms</IncludeColumn>
         <IncludeColumn>DueDate</IncludeColumn>
      </GeneralDetailReportQueryRq>
   </QBXMLMsgsRq>
</QBXML>

这是 Web 连接器中的日志

20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : cfn=""
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbNationality="US"
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMajorVers="13"
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMinorVers="0"
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : Received from sendRequestXML() following parameter:
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : strRequestXML =
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : XML dump follows: -

<?xml version="1.0" encoding="utf-8"?><?qbxml version="13.0"?><QBXML><QBXMLMsgsRq onError="continueOnError"><GeneralDetailReportQueryRq><GeneralDetailReportType>OpenInvoices</GeneralDetailReportType><ReportDateMacro>Today</ReportDateMacro><IncludeColumn>TxnID</IncludeColumn><IncludeColumn>TxnNumber</IncludeColumn><IncludeColumn>RefNumber</IncludeColumn><IncludeColumn>Name</IncludeColumn><IncludeColumn>TxnType</IncludeColumn><IncludeColumn>Date</IncludeColumn><IncludeColumn>Account</IncludeColumn><IncludeColumn>Aging</IncludeColumn><IncludeColumn>Amount</IncludeColumn><IncludeColumn>OpenBalance</IncludeColumn><IncludeColumn>RunningBalance</IncludeColumn><IncludeColumn>Terms</IncludeColumn><IncludeColumn>DueDate</IncludeColumn></GeneralDetailReportQueryRq></QBXMLMsgsRq></QBXML>

20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.do_sendRequestXML() : Request xml received.
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.ProcessRequestXML() : Processing request #1
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.ProcessRequestXML() : REQUEST: received from application: size (bytes) = 786
20170720.08:03:33 UTC   : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending request to QuickBooks.
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.ProcessRequestXML() : Response received from QuickBooks: size (bytes) = 93980
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending response back to application.
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : *** Calling receiveResponseXML() with following parameters:
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : wcTicket="d8bf5ba7-5e03-422a-a8ce-185cb86cf168"
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : response =
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : XML dump follows: -

<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<GeneralDetailReportQueryRs statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<ReportRet>
<ReportTitle>Open Invoices</ReportTitle>
<ReportSubtitle>As of July 20, 2017</ReportSubtitle>
<ReportBasis>Accrual</ReportBasis>
<NumRows>246</NumRows>
<NumColumns>14</NumColumns>
<NumColTitleRows>1</NumColTitleRows>
<ColDesc colID="1" dataType="STRTYPE">
<ColTitle titleRow="1" />
<ColType>Blank</ColType>
</ColDesc>

<TotalRow rowNumber="246">
<ColData colID="1" value="TOTAL" />
<ColData colID="9" value="1202982.55" />
<ColData colID="10" value="1089736.86" />
<ColData colID="11" value="1202982.55" />
</TotalRow>
</ReportData>
</ReportRet>
</GeneralDetailReportQueryRs>
</QBXMLMsgsRs>
</QBXML>


20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : hresult=""
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : message=""
20170720.08:03:37 UTC   : QBWebConnector.SOAPWebService.do_receiveResponseXML() : QBWC1042: ReceiveResponseXML failed
Error message: The request failed with HTTP status 413: Request Entity Too Large.
More info:
StackTrace =    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at QBWebConnector.localhost.WCWebServiceDoc.receiveResponseXML(String ticket, String response, String hresult, String message)
   at QBWebConnector.localhost.WCWebService.receiveResponseXML(String ticket, String response, String hresult, String message)
   at QBWebConnector.SOAPWebService.receiveResponseXML(String wcTicket, String response, String hresult, String message)
   at QBWebConnector.WebService.do_receiveResponseXML(String wcTicket, String response, String hresult, String message, Boolean& success, Boolean& timeout)
Source = System.Web.Services

This is the error screen short.

注意:我已经更新了上面的日志并删除了响应数据。我在日志文件中得到了完整的响应,但在网络连接器上出现了某些请求的错误。

我已经根据https://developer-static.intuit.com/qbSDK-current/doc/PDF/QBWC_proguide.pdf实现了我的服务医生。第 10 章中的 receiveResponseXML 方法。

最佳答案

您的 Web 服务器拒绝 HTTP 请求并显示以下消息:

  • 请求失败,HTTP 状态为 413:请求实体太大

如果您进行 Google 搜索,您会发现默认情况下 WCF 将请求限制为最大 65 KB。

QuickBooks 想要发送给您的请求是:

QuickBooks:大小(字节)= 93980

(或 93.98 KB,大约超过最大大小 30 KB)

重新配置您的 WCF 服务/网络服务器,使其允许更大的负载。方法如下:

关于quickbooks - Quickbook 网络连接器 : QBWC1042: ReceiveResponseXML failed Error message: The request failed with HTTP status 413: Request Entity Too Large,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195543/

相关文章:

c# - QBO SDK C# - 异步批处理创建多个客户

java - 格式化 XSD 以以特定方式生成字符串数组

quickbooks - 如何使用 Quickbooks QBFC (8.0 SDK) 获取客户、工作和员工列表

java - 我在哪里/如何找到使用 QuickBooks API v3 创建发票所需的税务引用代码?

c# - 如何通过 c# 从 QuickBooks Desktop 中查找员工扣减、添加项目?

quickbooks - 如何使用 QBXML 将行项目添加到现有销售订单

quickbooks - Quickbooks是否需要与SDK安装在同一台机器上

PHP + Quickbook 在线版(API 集成)?

wcf - 对 WCF 请求进行排队以便一次仅处理一个请求的最佳方法