Xero Java库,创建发票时显示“请求URL无效”

时间:2018-08-14 07:54:49

标签: java xero-api

我正在使用通过gradle下载的最新Xero Java客户端api:

compile group: 'com.xero', name: 'xero-java-sdk', version: '1.0.9'
compile group: 'com.xero', name: 'xero-accounting-api-schema', version: '0.1.2'

我正在尝试使用以下代码创建发票:

Contact xeroContact = xeroClient.getContact(xeroContactId);
xeroInvoice.setContact(xeroContact);
xeroInvoice.setType(InvoiceType.ACCREC);
xeroInvoice.setStatus(InvoiceStatus.AUTHORISED);
xeroInvoice.setCurrencyCode(CurrencyCode.AUD);

xeroInvoice.setBrandingThemeID(invoicingConfig.xeroBrandingThemeId);
xeroInvoice.setSentToContact(true);
xeroInvoice.setLineAmountTypes(LineAmountType.INCLUSIVE);

GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(Date.from(Instant.ofEpochSecond(timestamp)));
xeroInvoice.setDate(calendar);
xeroInvoice.setDueDate(calendar);

ArrayOfLineItem lineItems = new ArrayOfLineItem();
LineItem lineItem = new LineItem();
lineItem.setAccountCode(invoicingConfig.xeroAccountCode);
lineItem.setQuantity(BigDecimal.ONE);
lineItem.setDescription(chargeDescription);
lineItem.setUnitAmount(chargeAmount);
lineItems.getLineItem().add(lineItem);
xeroInvoice.setLineItems(lineItems);

xeroInvoice.setAmountPaid(chargeAmount);

return xeroClient.createInvoices(Arrays.asList(xeroInvoice)).get(0);

和参数:

xeroContactId: "f283d2c5-24a8-4e78-9b66-44c5d391a089"
timestamp: 1534133124
chargeDescription: "Dedicated Bronze Num"
chargeAmount: 55.00

(正在从我们的数据库中读取xeroContactId)

在我们的生产服务器上,对于那些参数,我一直在找回:

com.xero.api.XeroClient - com.xero.api.XeroApiException: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid URL</h2>
<hr><p>HTTP Error 400. The request URL is invalid.</p>
</BODY></HTML>

这似乎不是有效的Xero api错误响应。

1 个答案:

答案 0 :(得分:0)

我以为我要发送的是:

xeroContactId: "f283d2c5-24a8-4e78-9b66-44c5d391a089"

但是我的参数值实际上是:“ \ nf283d2c5-24a8-4e78-9b66-44c5d391a089”

产生的转义网址,当我访问它时会导致上面显示的错误。

换行是在我们的数据库中输入手动更改时由错字引入的。

只有当其他GET请求使用我们数据库中的相同联系人ID时,我才偶然发现了这一点。我从来没有找到一种简便的方法来调试POST命中的URL。