Walmart (интеграция с Java)- пост-лента с Resttemplate

В настоящее время я интегрирую Walmart в наше приложение и пытаюсь опубликовать ленту статей с помощью метода API. Мне уже удалось опубликовать фид из инструмента ARC, поэтому я уже знаю, как смоделировать запрос на публикацию, моя единственная проблема в том, что у меня возникают трудности с использованием его в моем коде при использовании Resttemplate.

Ниже приведен запрос (от ARC - Chrome) о том, что мне удалось опубликовать мой товар (я вижу его на консоли продавца Walmart) и код Java для него (урезанные учетные данные по соображениям безопасности):

Obs: подпись и другие поля, используемые в Java-коде для запросов, сгенерированы правильно, потому что я также использовал их в своем запросе от ARC, поэтому нет никаких проблем в значениях заголовков, но в том, как я пытаюсь установите файл в теле запроса, насколько я могу судить:

введите описание изображения здесь

И код для генерации заголовков и отправки пост-запроса с помощью Resttemplate:..............................

        headers = new HttpHeaders();
        headers.set("WM_SVC.NAME", "Walmart Marketplace");
        headers.set("WM_QOS.CORRELATION_ID", "123456abcdef");
        headers.set("WM_SEC.TIMESTAMP", timestamp);
        headers.set("WM_SEC.AUTH_SIGNATURE", signatureString);
        headers.set("WM_CONSUMER.ID", "my-consumer-id-cut-for-security-reasons");
        headers.set("WM_CONSUMER.CHANNEL.TYPE", "my-channel-type");
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));
        headers.set("Host", "https://marketplace.walmartapis.com");

..............................

    File file = new File("C:\\walmartfeed.xml");
    DiskFileItem fileItem = new DiskFileItem("file", "text/xml", false, file.getName(), (int) file.length(), file.getParentFile());
    fileItem.getOutputStream();
    MultipartFile multipartFile = new CommonsMultipartFile(fileItem);

    MultiValueMap<String, Object> parts =
            new LinkedMultiValueMap<String, Object>();
    parts.add("file", new ByteArrayResource(multipartFile.getBytes()));

    HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(parts, headers);
    restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
    restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
    restTemplate.getMessageConverters().add(new MultipartAwareFormHttpMessageConverter());

    ResponseEntity<FeedAcknowledgement> response = restTemplate.exchange("https://marketplace.walmartapis.com/v3/feeds?feedType=item", org.springframework.http.HttpMethod.POST, request, FeedAcknowledgement.class);

Я получаю код состояния 400, говорящий, что это неверный запрос. Удалось ли вам публиковать фиды для Walmart или есть какой-либо другой способ использовать Resttemplate для публикации multipart /form-data /files?

Спасибо

0 ответов

Другие вопросы по тегам