Cloudsight Api provides empty response on image Upload on Android platform

180 Views Asked by At

I am trying to upload an image on "https://api.cloudsightapi.com/image_requests" but after request call i am getting all the fields null into response .i.e status,name,token etc. I am using retrofit 2.0.1 for making request call.

Code:

RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);

MultipartBody.Part body =
MultipartBody.Part.createFormData("image_request[image]", file.getName(), requestFile);

String descriptionString = "en-US";
RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), descriptionString);

**API CALL:**
@Multipart
    @POST("https://api.cloudsightapi.com/image_requests")
    Call<FileUploadResponse> uploadPhoto(
            @Header("Authorization") String authorisation,
            @Part("image_request[locale]") RequestBody description,
            @Part MultipartBody.Part file);

I am getting all the fields into response.body null. Please help.

2

There are 2 best solutions below

1
On

Upload image file like this:

File file = // initialize file here

MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));

Call<MyResponse> call = api.uploadPhoto(filePart);//u can send other parameters along with the filePart depending upon ur method signature
1
On

CloudSight stopped accepting MultipartBody.Part So we have to send RequestBody i.e file with image name.

I have solved the issue with following steps:

RequestBody requestFile = RequestBody.create(MediaType.parse("image*/"), file);

String descriptionString = "en-US";

RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), descriptionString);

apiInterface.uploadPhoto("CloudSight key",description, requestFile);


In retrofit api call:

@Multipart
    @POST("https://api.cloudsightapi.com/image_requests")
    Call<FileUploadResponse> uploadPhoto(
            @Header("Authorization") String authorisation,
            @Part("image_request[locale]") RequestBody description,
            @Part("image_request[image]\"; filename=\"file.jpg\" " ) RequestBody file);

Hope This helps. Thanks.