【问题标题】:How To Use Spring RESTTemplate To Post Data to a Web Service如何使用 Spring RESTTemplate 将数据发布到 Web 服务
【发布时间】:2015-05-12 07:50:38
【问题描述】:

我已经编写了一个调用 web 服务的球衣客户端代码。它工作正常。现在我必须使用 Spring rest 模板来调用 webservice 而不是 jersey。所以请帮助我将球衣代码转换为 spring 4.0。 这是我的球衣代码。 服务客户端.java

package com.api.Client;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.tcs.DataShare.dao.ConfigureLogDao;
import com.tcs.ngps.sip.modeler.utils.ProductConfiguration;

public class ServiceClient {

    static final Logger LOGGER = LoggerFactory
            .getLogger(ServiceClient.class);

    private WebResource service;
    private ClientResponse response;
    private String serviceName;
    private String vmAddress;
    private String portNumber;
    private String WAR_FILE_NAME;


    public ServiceClient(String localhost, String port,
            String serviceName) {
        this.vmAddress = localhost;
        this.portNumber = port;
        this.serviceName = serviceName;
        System.out.println("vm address:" + vmAddress + "port:" + portNumber);
        ClientConfig config = new DefaultClientConfig();
        Client client = Client.create(config);
        WAR_FILE_NAME = ProductConfiguration
                .getStringValueForProductProperty("DATASHARE_SERVER_WAR_FILE_NAME");

        service = client.resource(UriBuilder.fromUri(
                "http://" + vmAddress + ":" + portNumber + "/" + WAR_FILE_NAME)
                .build());
        LOGGER.debug("WAR_FILE_NAME in the client program"+WAR_FILE_NAME);

        System.out.println("service is" + service);
    }

    public String getServiceName() {
        return serviceName;
    }

    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

    public String getVmAddress() {
        return vmAddress;
    }

    public void setVmAddress(String vmAddress) {
        this.vmAddress = vmAddress;
    }

    public String getPortNumber() {
        return portNumber;
    }

    public void setPortNumber(String portNumber) {
        this.portNumber = portNumber;
    }



    public InputStream zipFolder(String folderToBeZipped,String transactionId) {

        LOGGER.debug("ServiceClient :: zipFolder() : Calling  zipFolder Service -> folderToBeZipped: "
                + folderToBeZipped);
        String header = getServiceName();

        response = service.path("rest").path("DataShareService")
                .path("zipFolder")
                .type(MediaType.APPLICATION_JSON).header("header", header)
                .post(ClientResponse.class, folderToBeZipped);
        LOGGER.debug("INSIDE THE ZIP METHOD FOR CHECKING ZIP METHOD");
        InputStream inputStream = response.getEntityInputStream();

        LOGGER.debug("DataShareServiceClient :: zipFolder() : Calling zipFolderWithSubsequestFolder Service done");
        return inputStream;
    }



}

【问题讨论】:

  • “请帮我写我的代码/为我写我的代码” 不是本网站的有效问题陈述/问题。如果您被误导,Stackoverflow 不是代码编写服务。请查看Help Center 中的一些相关链接,了解如何提出好的问题。我投票结束,因为“太宽泛”

标签: spring spring-mvc jersey resttemplate


【解决方案1】:

您可以通过简单的搜索找到它。

根据 spring 的this 教程,您可以这样做:

// Set the Content-Type header
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(new MediaType("application","json"));
HttpEntity<String> requestEntity = new HttpEntity<String>(folderToBeZipped, requestHeaders);

// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();

// Add the Jackson and String message converters
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());

// Make the HTTP POST request, marshaling the request to JSON, and the response to a String
ResponseEntity<InputStream> responseEntity = restTemplate.exchange(your_url, HttpMethod.POST, requestEntity, InputStream.class);
String result = responseEntity.getBody();

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2018-04-27
    • 2016-11-17
    • 2017-09-25
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多