Верблюд Apache получает ошибку, передавая XML как полезную нагрузку и пытаясь упорядочить его в json - PullRequest
0 голосов
/ 18 октября 2018

Я использую POSTMan для тестирования моего API, я пытаюсь передать xml (type: application / xml) через почтальон моей конечной точке API остальных.Я хочу прочитать этот XML, а затем сохранить соответствующую информацию в моей базе данных.

Я пытаюсь сначала преобразовать xml в json через верблюда, а затем прочитать данные и вставить их.Я правильно определил маршруты (я так думаю), но я всегда получаю следующую ошибку:

"{ \"status\": 400, \"message\": \"an error occurred: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: java.io.ByteArrayInputStream@18eaa21b; line: 1, column: 2]\" } "

xml, который я отправляю:

    <ns1:ContractLinkEvent xmlns:ns1="some url" xmlns:ns0="some url"><Header xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Action>UPDATE</Action>
        <SubAction2 xsi:nil="true" />
        <SourceSystemUser xsi:nil="true" />
      </Header><ContractLink xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <SourceId>c4eb36da-4db7-e811-80ed-0050568e7b74</SourceId>
        <ContractLinkId>1509148</ContractLinkId>
        <PricingAgreement>
          <SourceId>86078759-49b7-e811-80ed-0050568e7b74</SourceId>
          <PricingAgreementId>1509146</PricingAgreementId>
          <ContractCode>C000012151</ContractCode>
          <Currency>USD</Currency>
          <ReferenceNumber>REF.012002</ReferenceNumber>
          <CreateDate>2018-09-13T11:37:10Z</CreateDate>
          <CreateUser>username</CreateUser>
          <CreateSystem>CRM</CreateSystem>
          <ModifiedDate>2018-09-13T12:02:42Z</ModifiedDate>
          <ModifiedUser>username</ModifiedUser>
          <ModifiedSystem>CRM</ModifiedSystem>
        </PricingAgreement>
        <BillingProfile>
          <SourceId>409cfdd9-781b-e511-b242-0050568e4f04</SourceId>
          <BillingProfileId>173886</BillingProfileId>
          <BillingProfileCode xsi:nil="true" />
          <BillingProfileName xsi:nil="true" />
          <DisplayName xsi:nil="true" />
          <BillingProfileTypeCode xsi:nil="true" />
          <SellingLE xsi:nil="true" />
          <APCode xsi:nil="true" />
          <PrimaryBillingFlag xsi:nil="true" />
          <BillToCreditCardFlag xsi:nil="true" />
          <PrintPriorityCode xsi:nil="true" />
          <InvoiceTypeCode xsi:nil="true" />
          <ElectronicInvoiceCode xsi:nil="true" />
          <PaperInvoiceCode xsi:nil="true" />
          <InvoiceFormat xsi:nil="true" />
          <ItemizedInvoiceFlag xsi:nil="true" />
          <DeliveryMethodCode xsi:nil="true" />
          <InvoiceEmailAddress xsi:nil="true" />
          <InvoiceEmailContactName xsi:nil="true" />
          <CompressionFlag xsi:nil="true" />
          <CompressionPassword xsi:nil="true" />
          <PaperInvoiceFeeFlag xsi:nil="true" />
          <BusinessCode xsi:nil="true" />
          <VatNumber xsi:nil="true" />
          <MinimumBillingFlag xsi:nil="true" />
          <VesselSortFlag xsi:nil="true" />
          <AllowReguideFlag xsi:nil="true" />
          <AllowRerateFlag xsi:nil="true" />
          <CreateUser xsi:nil="true" />
          <CreateSystem xsi:nil="true" />
          <ModifiedUser xsi:nil="true" />
          <ModifiedSystem xsi:nil="true" />
          <SalesOrg xsi:nil="true" />
          <DistChannel xsi:nil="true" />
          <Division xsi:nil="true" />
          <SalesDistrictCode xsi:nil="true" />
          <SalesOffice xsi:nil="true" />
          <Currency xsi:nil="true" />
          <PaymentTerms xsi:nil="true" />
          <DPId xsi:nil="true" />
          <BillingProfileGroup xsi:nil="true" />
          <InvoiceEmailList xsi:nil="true" />
          <SV xsi:nil="true" />
          <SAP xsi:nil="true" />
          <ServiceProfiles xsi:nil="true" />
          <SAPBlock xsi:nil="true" />
          <ContractClasses xsi:nil="true" />
        </BillingProfile>
        <StartDate>2018-09-16T00:00:00</StartDate>
        <CreateDate>2018-09-13T12:09:28Z</CreateDate>
        <CreateUser>Pratiksha Gupta</CreateUser>
        <CreateSystem>CRM</CreateSystem>
        <ModifiedDate>2018-09-13T12:11:23Z</ModifiedDate>
        <ModifiedUser>sv-CRMAPProxy AP Proxy</ModifiedUser>
        <ModifiedSystem>CRM</ModifiedSystem>
      </ContractLink></ns1:ContractLinkEvent>

Я проверил xml онлайн и в xml ошибок нет. Я также определил маршрутизацию в верблюде для конечной точки:

rest("/readXml")
        .consumes(MediaType.APPLICATION_XML)
        .post()
        //.outType(String.class)
                .to("direct:readxml");

        from("direct:readxml").streamCaching()
                .process(readAndInsertXml)
                 .marshal().xmljson() 

                 .setHeader(Exchange.HTTP_METHOD, constant("POST")) 
                .setHeader(Exchange.CONTENT_TYPE, constant("application/xml"))
                .to("mock:result").end();

Это мой процессор readandInsertXmlпока пусто.

@Component
public class ReadAndInsertXml implements Processor{

    @Override
    public void process(Exchange exchange) throws Exception {

        Logger logger = LoggerFactory.getLogger(this.getClass());
    /*  SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();*/
        try {
            logger.info("inside processor method of read xml");
            logger.info(exchange.getIn().getBody().toString());
/*          Document doc = (Document) exchange.getIn().getBody();
            logger.info("after storing in dom document");
            System.out.println(doc.getAttributes())*/;
            exchange.getOut().setBody("sample");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Я искал в Интернете несколько раз, но не могу найти решение. Может ли кто-нибудь помочь здесь, что я делаю не так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...