【问题标题】:how to convert REST call related to Curl command into java client?如何将与 Curl 命令相关的 REST 调用转换为 java 客户端?
【发布时间】:2015-12-28 10:24:44
【问题描述】:
curl -v 
 -F "sharedsecret=YourIntegrationPassword" 
 -F "content=@BatchDataFile.zip;type=application/octet-stream" 
 -F "event=Import Batch Data" 
 -F clienttype="Curl" -F clientinfo="OS=Linux:Host=myhost" -F clientversion="1.0" 
 https://www.sample.com/sell/fileupload?realm=YourSiteID

我在 linux 终端上使用 curl 命令成功调用了上述 REST 调用。现在,我想使用 Java RESTClient 调用服务(REST 服务器)。如何做到这一点?

【问题讨论】:

  • 您为什么不从 java REST 客户端的基本代码开始,然后向我们展示您在代码中遇到的问题。
  • 我已经开发了一个服务和一个客户端,但是我无法将这个 curl 相关的东西转换成一个客户端程序。 (谢谢回复)。通过使用此服务,我需要将 zip 文件发送到服务器。

标签: java rest curl httpclient multipartform-data


【解决方案1】:

有一个可用于 java 的轻量级 curl 包装器 API。 看看:CurlJava

【讨论】:

  • 非常感谢您的帮助。
【解决方案2】:

如果你可以有Spring依赖,那么看看Consuming RESTful webservice

【讨论】:

  • 感谢 sidgate 的回复,我通过使用 Jersey“ FormDataMultiPart ”解决了这个问题。
【解决方案3】:

您可以编写自己的 java Rest 客户端, 从该代码中,您可以调用其余部分。

公共类 ClientJerseyGet {

public static void main(String[] args) {

    try {

        Client client = Client.create();
        String restUrl="https://www.sample.com/sell/fileupload?realm=YourSiteID";
        WebResource webResource = client.resource(restUrl);

        ClientResponse response = webResource.accept("application/xml")
                .get(ClientResponse.class);
        String output = response.getEntity(String.class);

        System.out.println("Server response : " + response.getStatus());
        System.out.println();
        System.out.println(output);

        if (response.getStatus() != 200) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + response.getStatus());
        }

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

}

更多详情可以关注:http://entityclass.in/rest/jerseyClientGetXml.htm

【讨论】:

    【解决方案4】:
    import javax.ws.rs.core.MediaType;
    
    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.multipart.FormDataMultiPart;
    
    public class AribaClient {
    
        public static void main(String argsp[]) {
    
            AribaClient clientRequest = new AribaClient();
    
            clientRequest.getResponse();
        }
    
        private void getResponse() {
            try {
    
                Client client = Client.create();
                WebResource webResource = client
                        .resource("https://www.sample.com/sell/fileupload?realm=YourSiteID");
    
                FormDataMultiPart formData = new FormDataMultiPart();
                formData.field("name", "value");
                formData.field("file", "D:/repository/moved Files/Purchase.zip");
                formData.field("name1", "value1");
    
                ClientResponse response = webResource.type(
                        MediaType.MULTIPART_FORM_DATA_TYPE).post(
                        ClientResponse.class, formData);
    
                // ClientResponse response =
                // webResource.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class,
                // formData);
                if (response.getStatus() != 200) {
                    throw new RuntimeException("Failed : HTTP error code : "
                            + response);
                } else {
                    System.out.println("Response :: " + response.getStatus());
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    

    这是我能够将表单值发布到 REST 服务器的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多