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
Post a Comment