java - Sending base64 encoded image to server using HttpUrlConnection Android -


i'm trying send base64 encoded images server using httpurlconnection. problem i'm having images gets sent successfully, generate filenotfound exception. code encoding image can found below.

public static string encodeimage(bitmap thumbnail) {             bytearrayoutputstream baos = new bytearrayoutputstream();             thumbnail.compress(bitmap.compressformat.jpeg, 100, baos);             byte[] b = baos.tobytearray();             string imageencoded = base64.encodetostring(b,base64.url_safe);             return imageencoded;         } 

when change line:

string imageencoded = base64.encodetostring(b,base64.url_safe); 

to:

string imageencoded = base64.encodetostring(b,base64.default); 

then images generate filenotfoundexception , gets sent server successfully.

below code httpurlconnection:

public class httpmanager {      public static string getdata(requestpackage p) {          bufferedreader reader = null;         string uri = p.geturi();         if (p.getmethod().equals("get")) {             uri += "?" + p.getencodedparams();         }          try {             url url = new url(uri);             httpurlconnection con = (httpurlconnection) url.openconnection();             con.setrequestmethod(p.getmethod());               if (p.getmethod().equals("post")) {                 con.setdooutput(true);                 outputstreamwriter writer = new outputstreamwriter(con.getoutputstream());                 writer.write(p.getencodedparams()); //url encoded parameters                 writer.flush();             }              stringbuilder sb = new stringbuilder();             reader = new bufferedreader(new inputstreamreader(con.getinputstream()));              string line;             while ((line = reader.readline()) != null) {                 sb.append(line + "\n");             }              return sb.tostring();          } catch (exception e) {             e.printstacktrace();             return null;         } {             if (reader != null) {                 try {                     reader.close();                 } catch (ioexception e) {                     e.printstacktrace();                     return null;                 }             }         }      }  } 

any appreciated. thanks

i had same problem. use code below fine:

 public class mainactivity extends appcompatactivity {  int select_picture = 101; int capture_image = 102; button getimage; imageview selectedimage; string encodedimage; jsonobject jsonobject; jsonobject response;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     getimage = (button) findviewbyid(r.id.get_image);     selectedimage = (imageview) findviewbyid(r.id.selected_image);      final alertdialog.builder builder = new alertdialog.builder(mainactivity.this);     builder.settitle("profile picture");     builder.setmessage("chooose from?");     builder.setpositivebutton("gallery", new dialoginterface.onclicklistener() {         @override         public void onclick(dialoginterface dialog, int which) {             intent intent = new intent(intent.action_pick, mediastore.images.media.external_content_uri);             startactivityforresult(intent, select_picture);         }     });     builder.setnegativebutton("cancel", null );   }  @override protected void onactivityresult(int requestcode, int resultcode, intent data) {     // check request we're responding     if (requestcode == select_picture) {         // make sure request successful         log.d("vicky","i'm out.");         if (resultcode == result_ok && data != null && data.getdata() != null) {             uri selectedimageuri = data.getdata();             bitmap selectedimagebitmap = null;             try {                 selectedimagebitmap = mediastore.images.media.getbitmap(getcontentresolver(), selectedimageuri);             } catch (ioexception e) {                 e.printstacktrace();             }             selectedimage.setimagebitmap(selectedimagebitmap);             bytearrayoutputstream bytearrayoutputstream = new bytearrayoutputstream();             selectedimagebitmap.compress(bitmap.compressformat.jpeg, 100, bytearrayoutputstream);             byte[] bytearrayimage = bytearrayoutputstream.tobytearray();             encodedimage = base64.encodetostring(bytearrayimage, base64.default);             log.d("vicky","i'm in.");             new uploadimages().execute();         }     } }  private class uploadimages extends asynctask<void, void, void> {      @override     protected void onpreexecute() {      }      @override     protected void doinbackground(void... params) {          try {             log.d("vicky", "encodedimage = " + encodedimage);             jsonobject = new jsonobject();             jsonobject.put("imagestring", encodedimage);             jsonobject.put("imagename", "+917358513024");             string data = jsonobject.tostring();             string yoururl = "http://54.169.88.65/events/eventmain/upload_image.php";             url url = new url(yoururl);             httpurlconnection connection = (httpurlconnection) url.openconnection();             connection.setdooutput(true);             connection.setdoinput(true);             connection.setrequestmethod("post");             connection.setfixedlengthstreamingmode(data.getbytes().length);             connection.setrequestproperty("content-type", "application/json;charset=utf-8");             outputstream out = new bufferedoutputstream(connection.getoutputstream());             bufferedwriter writer = new bufferedwriter(new outputstreamwriter(out, "utf-8"));             writer.write(data);             log.d("vicky", "data php = " + data);             writer.flush();             writer.close();             out.close();             connection.connect();              inputstream in = new bufferedinputstream(connection.getinputstream());             bufferedreader reader = new bufferedreader(new inputstreamreader(                     in, "utf-8"));             stringbuilder sb = new stringbuilder();             string line = null;             while ((line = reader.readline()) != null) {                 sb.append(line);             }             in.close();             string result = sb.tostring();             log.d("vicky", "response php = " + result);             //response = new jsonobject(result);             connection.disconnect();         } catch (exception e) {             log.d("vicky", "error encountered");             e.printstacktrace();         }         return null;     }      @override     protected void onpostexecute(void args) {      }   } } 

Comments