简体   繁体   English

如何将与Curl命令相关的REST调用转换为Java客户端?

[英]how to convert REST call related to Curl command into java client?

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

I was successful in calling the above REST Call by using curl command on linux terminal. 我通过在Linux终端上使用curl命令成功调用了上述REST调用。 Now, I want to call the service (REST Server) using Java RESTClient. 现在,我想使用Java RESTClient调用服务(REST服务器)。 How to do this? 这个怎么做?

There's a lightweight curl wrapper API available for java. 有一个针对Java的轻量级curl包装器API。 Check it out: CurlJava 出: CurlJava

如果您可以拥有Spring依赖项,那么请看一下使用RESTful Web服务

you can write your own java Rest client , from that code you can call your rest . 您可以编写自己的Java Rest客户端,从该代码中可以调用rest。

public class ClientJerseyGet { 公共类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();
    }
}

} }

for more Details you can follow : http://entityclass.in/rest/jerseyClientGetXml.htm 有关更多详细信息,请遵循: http : //entityclass.in/rest/jerseyClientGetXml.htm

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();
        }

    }
}

This is the way i am able to post form values to a REST server. 这是我能够将表单值发布到REST服务器的方式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM