Walmart(Java集成) - 使用Resttemplate发布Feed

时间:2017-08-04 10:54:06

标签: java http-post multipartform-data resttemplate walmart-api

我目前正在将沃尔玛集成到我们的应用程序中,并且我正在尝试通过API方法发布项目Feed。 我已经成功地从ARC工具发布了一个feed,所以我已经知道如何为它的post请求建模,我唯一的问题是我在使用Resttemplate时在代码中使用它时遇到了困难。

以下是成功发布我的项目的请求(来自ARC - Chrome)(我可以在我的Walmart卖家控制台中看到它们)及其Java代码(出于安全原因修剪凭据):

Obs:正确生成了Java代码中使用的签名和其他字段,因为我在ARC的请求中也使用了它们,所以标题中没有问题值,但在我如何尝试在正文请求中设置文件,据我所知:

enter image description here

用于生成标头并使用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发布多部分/表单数据/文件?

由于

0 个答案:

没有答案