首页 > 解决方案 > 从 java 代码在 xero 中创建联系人会产生错误的请求

问题描述

以下是我在 xero 中创建联系人时遇到错误的日志,因为我想在 xero 中创建多个联系人,我编写了 api,但是如果我在邮递员中发送相同的请求,它工作正常,则会出现以下错误。

<pre>com.xero.api.XeroApiException: Bad Request com.xero.api.XeroApiExceptionHandler.execute(XeroApiExceptionHandler.java:27) com.xero.api.client.AccountingApi.createContact(AccountingApi.java:912) in.techchefs.anyspace.common.service.impl.XeroServiceImpl.addContactToXero(XeroServiceImpl.java:274) 下面是调用 Contact API 的代码

public Contact addContactToXero(User user, String currencyCode) throws IOException {
        logger.info("inside xeroservise User addContactToXero---->>"+currencyCode);
        ApiClient client = new ApiClient();
        accountingApi = AccountingApi.getInstance(client);

        Contact contact = new Contact();
        contact.setIsCustomer(true);
        contact.setIsSupplier(true);
        String businessName = user.getFirstName() + " " + user.getLastName() + " " + user.getId();

        if (user.getBusinessInfo() != null && user.getBusinessInfo().getName() != null) {
            businessName = user.getBusinessInfo().getName();
        }
        contact.setName(businessName);
        contact.setFirstName(user.getFirstName());
        contact.setLastName(user.getLastName());
        contact.setContactNumber(user.getPhone());
        contact.setEmailAddress(user.getEmail());


        List<Address> arrayOfAddress = new ArrayList<Address>();

        Set<UserAddress> userAddresses = user.getAddress();
        for (Iterator iterator = userAddresses.iterator(); iterator.hasNext();) {
            UserAddress userAddress = (UserAddress) iterator.next();

            Address address = new Address();

            address.setAddressLine1(userAddress.getStreet());
            address.setAddressLine2(userAddress.getSuburb());
            address.setAddressType(userAddress.getAddressType() == 1 ? AddressTypeEnum.DELIVERY : AddressTypeEnum.POBOX);
            address.setRegion(userAddress.getState());
            address.setPostalCode(userAddress.getPostalCode());
            address.setCountry(userAddress.getCountry() == null ? "" : userAddress.getCountry().getTitle());

            arrayOfAddress.add(address);
        }

        contact.setAddresses(arrayOfAddress);
        contact.setContactStatus(ContactStatusEnum.ACTIVE);
        logger.info("addContactToXero by USer contact--->>"+contact);
        String accessToken=getAccessToken(currencyCode);
        logger.info("addContactToXero by USer accessToken--->>"+accessToken);
        XeroTokenStorage token=tokenStorageService.getByCurrencode(currencyCode);
        logger.info("addContactToXero by USer token.getTenantId()--->>"+token.getTenantId());
        Contacts contatcsAdded = accountingApi.createContact(accessToken,token.getTenantId(),contact);
        List<Contact> contatcsAddedList = contatcsAdded.getContacts();

        return contatcsAddedList.get(0);
        //return contatcsAdded;
    }

我给记录器联系

class Contact {
    contactID: null
    contactNumber: 6666
    accountNumber: null
    contactStatus: ACTIVE
    name: Marc Verano 1
    firstName: Marc
    lastName: Verano
    emailAddress: info@anyspaces.com
    skypeUserName: null
    contactPersons: []
    bankAccountDetails: null
    taxNumber: null
    accountsReceivableTaxType: null
    accountsPayableTaxType: null
    addresses: []
    phones: []
    isSupplier: true
    isCustomer: true
    defaultCurrency: null
    xeroNetworkKey: null
    salesDefaultAccountCode: null
    purchasesDefaultAccountCode: null
    salesTrackingCategories: []
    purchasesTrackingCategories: []
    trackingCategoryName: null
    trackingCategoryOption: null
    paymentTerms: null
    updatedDateUTC: null    
    contactGroups: []
    website: null
    brandingTheme: null
    batchPayments: null
    discount: null
    balances: null
    attachments: []
    hasAttachments: null
    validationErrors: []
    hasValidationErrors: null
}

我从 java 得到的错误是错误的请求,如果我通过邮递员发送它正在工作,则相同的请求。请告诉我一些解决方案

标签: springxero-api

解决方案


您的问题中有一条线索 - “如果我通过邮递员发送相同的请求它正在工作” - 联系人姓名和号码需要是唯一的,因此请检查您是否为这些字段提供唯一值。

然而,正如 droopsnoot 在评论中提到的那样,任何验证错误都将从 Xero API 返回,因此询问响应,您可能会找到它发生的原因。


推荐阅读