Why does PDF is not able to upload in PHP API for Android Pie, Q and R using Retrofit 2 in Android/Java? [Not solved]

You api accept only two parameters but you passed three parameters that’s why you getting error.

so API method should be

@Multipart
@POST("eligibity/auth/attachment/upload/add")
Call<ResponseBody> uploadFile(
    @Part("body") RequestBody description,
    @Part MultipartBody.Part file
);

And update your uploadPDF() like below

    private void uploadPDF(String path) {

   //json data
    JSONObject sJsonAttachment = new JSONObject();
            JSONObject body = new JSONObject();
            sJsonAttachment.put("appointmentId", AdapterCollections.clsClaimDiscussionList.get(position).appointment_id);
            sJsonAttachment.put("createdBy", Integer.parseInt(preferenceManager.getUserId()));
            sJsonAttachment.put("customerId", Integer.parseInt(preferenceManager.getCustomerId()));
            sJsonAttachment.put("encounterId", AdapterCollections.clsClaimDiscussionList.get(position).encounter_id);
            sJsonAttachment.put("expiryDate", Utility.getCurrentDate("MM-DD-YY"));
            sJsonAttachment.put("fbType", 4);
            sJsonAttachment.put("fileId", 0);
            sJsonAttachment.put("fileName", "name");
            sJsonAttachment.put("insTpaPatId", 0);
            sJsonAttachment.put("isActive", 1);
            sJsonAttachment.put("messageId", AdapterCollections.clsClaimDiscussionList.get(position).log_messages.get(position).log_id);
            sJsonAttachment.put("patientId", AdapterCollections.clsClaimDiscussionList.get(position).patient_id);
            sJsonAttachment.put("recType", "");
            sJsonAttachment.put("reportDate", Utility.getCurrentDate("DD-MM-YYYY"));
            sJsonAttachment.put("siteId", Integer.parseInt(preferenceManager.getSiteId()));
            sJsonAttachment.put("type", 4);
            sJsonAttachment.put("uploadDate", Utility.getCurrentDate("MMDDYY"));




   // create RequestBody instance from file
    File file=new File(path);
    RequestBody requestFile =
            RequestBody.create(
                         MediaType.parse(Files.probeContentType(file.toPath()))),
                         file
             );

    // MultipartBody.Part is used to send also the actual file name
    MultipartBody.Part fileBody =
            MultipartBody.Part.createFormData("fileName", file.getName(), requestFile);

    // add another part within the multipart request
     RequestBody bodyJsonAttachment =
            RequestBody.create(
                    okhttp3.MultipartBody.FORM, sJsonAttachment.toString());


    ApiCall apiCall = RetrofitService.createService(SCMS_BASE_URL, ApiCall.class);
            assert apiCall != null;
            apiCall.uploadFile(fileBody, bodyJsonAttachment).enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(@NotNull Call<ResponseBody> call, @NotNull Response<ResponseBody> response) {
                    try {
                        showLog("STATUS: " + response.code());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onFailure(@NotNull Call<ResponseBody> call, @NotNull Throwable t) {
                    showLog("FAILED: "+ t.getMessage());
                }
            });

 }

Note : if you getting warning error on mime type, update it

Leave a Comment