Jersey REST Client : Posting MultiPart data
java, jersey, jersey-client, multipartform-data, rest
Solution
"Right now I am getting a compile error at the last line saying it cannot convert from `void` to `ClientResponse`."
Look at the javadoc for `WebResource`. Look at the `post(Object)` (with Object arg). It returns void.
You need to be using the overloaded `post(Class returnType, requestEntity)`, which return an instance of `returnType` type.
So you should be doing something like
ClientResponse response = webResource
.type(MediaType.MULTIPART_FORM_DATA_TYPE)
.post(ClientResponse.class, multipartEntity);
Problem
I am trying to write a Jersey client app which can post multi part form data to a Restful Jersey service. I need to post a CSV file with the data and a JSON with meta-data. I am using Jersey client 1.18.3. Here is my code (some names have been changed for company confidentiality )... ``` Client client = Client.create(); WebResource webResource = client.resource("http://localhost:8080/mariam/service/playWithDad"); FileDataBodyPart filePart = new FileDataBodyPart("file", new File("C:/Users/Admin/Desktop/input/games.csv")); String playWithDadMetaJson = "{\n" + " \"sandboxIndicator\": true,\n" + " \"skipBadLines\": false,\n" + " \"fileSeparator\": \"COMMA\",\n" + " \"blockSize\": false,\n" + " \"gameUUID\": \"43a004c9-2130-4e75-8fd4-e5fccae31840\",\n" + " \"useFriends\": \"false\"\n" + "}\n" + ""; MultiPart multipartEntity = new FormDataMultiPart() .field("meta", playWithDadMetaJson, MediaType.APPLICATION_JSON_TYPE) .bodyPart(filePart); ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(multipartEntity); ``` Right now I am getting a compile error at the last line saying it cannot convert from void to ClientResponse. I got some guidance on the RestFul service itself previously from this post.. Java Rest Jersey : Posting multiple types of data (File and JSON)