php - Unable to upload image to webserver from Android by Retrofit2 -


trying upload image file web server android.

i using retrofit2 getting these errors.

i have uploaded php backend file web server.

here errors facing :

fatal exception: main                                                          process: com.brl.gps71, pid: 4338                                                          java.lang.illegalargumentexception: unable create call adapter interface retrofit2.call                                                              method apiconfig.uploadfile                                                              @ retrofit2.servicemethod$builder.methoderror(servicemethod.java:667)                                                              @ retrofit2.servicemethod$builder.createcalladapter(servicemethod.java:233)                                                              @ retrofit2.servicemethod$builder.build(servicemethod.java:159)                                                              @ retrofit2.retrofit.loadservicemethod(retrofit.java:166)                                                              @ retrofit2.retrofit$1.invoke(retrofit.java:145)                                                              @ java.lang.reflect.proxy.invoke(proxy.java:393)                                                              @ $proxy0.uploadfile(unknown source)                                                              @ com.brl.gps71.signup.uploadfile(signup.java:309)                                                              @ com.brl.gps71.signup.access$000(signup.java:49)                                                              @ com.brl.gps71.signup$2.onclick(signup.java:118)                                                              @ android.view.view.performclick(view.java:5207)                                                              @ android.view.view$performclick.run(view.java:21177)                                                              @ android.os.handler.handlecallback(handler.java:739)                                                              @ android.os.handler.dispatchmessage(handler.java:95)                                                              @ android.os.looper.loop(looper.java:148)                                                              @ android.app.activitythread.main(activitythread.java:5441)                                                              @ java.lang.reflect.method.invoke(native method)                                                              @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:738)                                                              @ com.android.internal.os.zygoteinit.main(zygoteinit.java:628)                                                           caused by: java.lang.illegalargumentexception: call return type must parameterized call<foo> or call<? extends foo>                                                              @ retrofit2.utils.getcallresponsetype(utils.java:361)                                                              @ retrofit2.executorcalladapterfactory.get(executorcalladapterfactory.java:36)                                                              @ retrofit2.retrofit.nextcalladapter(retrofit.java:217)                                                              @ retrofit2.retrofit.calladapter(retrofit.java:201)                                                              @ retrofit2.servicemethod$builder.createcalladapter(servicemethod.java:231)                                                              @ retrofit2.servicemethod$builder.build(servicemethod.java:159)                                                               @ retrofit2.retrofit.loadservicemethod(retrofit.java:166)                                                               @ retrofit2.retrofit$1.invoke(retrofit.java:145)                                                               @ java.lang.reflect.proxy.invoke(proxy.java:393)                                                               @ $proxy0.uploadfile(unknown source)                                                               @ com.brl.gps71.signup.uploadfile(signup.java:309)                                                               @ com.brl.gps71.signup.access$000(signup.java:49)                                                               @ com.brl.gps71.signup$2.onclick(signup.java:118)                                                               @ android.view.view.performclick(view.java:5207)                                                               @ android.view.view$performclick.run(view.java:21177)                                                               @ android.os.handler.handlecallback(handler.java:739)                                                               @ android.os.handler.dispatchmessage(handler.java:95)                                                               @ android.os.looper.loop(looper.java:148)                                                               @ android.app.activitythread.main(activitythread.java:5441) 

here php :

    <?php $target_dir = "imageupload/"; $target_file_name = $target_dir .basename($_files["file"]["name"]); $response = array();  // check if image file actual image or fake image if (isset($_files["file"]))  {    if (move_uploaded_file($_files["file"]["tmp_name"], $target_file_name))     {      $success = true;      $message = "successfully uploaded";    }    else     {       $success = false;       $message = "error while uploading";    } } else  {       $success = false;       $message = "required field missing"; } $response["success"] = $success; $response["message"] = $message; echo json_encode($response);  ?> 

service interface :

    public interface apiconfig {      @multipart     @post("upload_image.php")     call uploadfile(@part multipartbody.part file, @part("file") requestbody name);  } 

configuration class :

public class appconfig {      private static string base_url = "mywebserveraddress";     static retrofit getretrofit() {         return new retrofit.builder()                 .baseurl(appconfig.base_url)                 .addconverterfactory(gsonconverterfactory.create())                 .build();     } } 

server response class :

    public class serverresponse {      // variable name should same in json response php     @serializedname("success")     boolean success;     @serializedname("message")     string message;      string getmessage() {         return message;     }      boolean getsuccess() {         return success;     }  } 

method uploading image :

private void uploadfile(string mediapath) {     //progressdialog.show();      // map used multipart file using okhttp3.requestbody    file file = new file(mediapath);     file file = new file(mediapath);      // parsing media type file    requestbody requestbody = requestbody.create(mediatype.parse("*/*"), file);     requestbody requestbody = requestbody.create(mediatype.parse("image/*"), file);      multipartbody.part filetoupload = multipartbody.part.createformdata("file", file.getname(), requestbody);     requestbody filename = requestbody.create(mediatype.parse("text/plain"), file.getname());      apiconfig getresponse = appconfig.getretrofit().create(apiconfig.class);     call call = getresponse.uploadfile(filetoupload, filename);     call.enqueue(new callback() {         @override         public void onresponse(call call, response response) {             serverresponse serverresponse = (serverresponse) response.body();             if (serverresponse != null) {                 if (serverresponse.getsuccess()) {                     toast.maketext(getapplicationcontext(), serverresponse.getmessage(),toast.length_short).show();                 } else {                     toast.maketext(getapplicationcontext(), serverresponse.getmessage(),toast.length_short).show();                 }             } else {                 assert serverresponse != null;                 log.v("response", serverresponse.tostring());             }           //  progressdialog.dismiss();         }          @override         public void onfailure(call call, throwable t) {          }     }); } 


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -