Xero Java库,创建发票可以"The request URL is invalid"



我正在使用通过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 错误响应。

我以为我要发送的是:

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

但我的参数值实际上是:"f283d2c5-24a8-4e78-9b66-44c5d391a089">

它产生了一个转义的 URL,当我访问它时,它导致了上面显示的错误。

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

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

相关内容

最新更新