Sunday 15 February 2015

json - Error when post image from Android App to C# WCF Service -



json - Error when post image from Android App to C# WCF Service -

java method upload

public boolean enviararquivo(file arquivo) throws ioexception { boolean ret = false; log.d(tag, "eviando arquivo via http"); defaulthttpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(urls.upload_arquivo); responsehandler<string> responsehandler = new basicresponsehandler(); inputstream = null; byte[] buffer = null; = new fileinputstream(arquivo); buffer = new byte[is.available()]; is.read(buffer); is.close(); // transformando array de bytes em string para enviar ao // servidor string imagembase64 = base64.encodetostring(buffer, base64.default); multipartentity entity = new multipartentity(); entity.addpart("image", new stringbody(imagembase64)); httppost.setentity(entity); seek { string responsestring = httpclient.execute(httppost, responsehandler); log.d(tag, "arquivo enviado via http"); ret = true; } grab (clientprotocolexception e) { // todo auto-generated grab block e.printstacktrace(); } grab (ioexception e) { // todo auto-generated grab block e.printstacktrace(); } grab (exception e) { // todo auto-generated grab block e.printstacktrace(); } homecoming ret; }

c# wcf interface

[operationcontract] [webinvoke(method = "post", uritemplate = "uploadimagem", responseformat = webmessageformat.json, requestformat = webmessageformat.json)] bitmap uploadimagem(stream imagem);

c# wcf service

public bitmap uploadimagem(stream imagem) { logwriter.writelog("imagem recebida"); seek { byte[] buffer = new byte[16 * 1024]; using (memorystream ms = new memorystream()) { int read; while ((read = imagem.read(buffer, 0, buffer.length)) > 0) { ms.write(buffer, 0, read); } buffer = ms.toarray(); } using (memorystream mstream = new memorystream()) { mstream.write(buffer, 0, buffer.length); bitmap bm = new bitmap(mstream); homecoming bm; } } grab (exception) { homecoming null; } }

eclipse logcat 10-15 14:24:45.138: d/uploadphotos(14370): eviando arquivo via http 10-15 14:24:45.198: w/system.err(14370): android.os.networkonmainthreadexception 10-15 14:24:45.208: w/system.err(14370): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1117) 10-15 14:24:45.208: w/system.err(14370): @ java.net.inetaddress.lookuphostbyname(inetaddress.java:385) 10-15 14:24:45.208: w/system.err(14370): @ java.net.inetaddress.getallbynameimpl(inetaddress.java:236) 10-15 14:24:45.208: w/system.err(14370): @ java.net.inetaddress.getallbyname(inetaddress.java:214) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) 10-15 14:24:45.208: w/system.err(14370): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:653) 10-15 14:24:45.218: w/system.err(14370): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:627) 10-15 14:24:45.218: w/system.err(14370): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:616) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.app.uploadphotos.enviararquivo(uploadphotos.java:251) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.app.uploadphotos.sendfile(uploadphotos.java:158) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.app.uploadphotos.sendfolders(uploadphotos.java:121) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.app.uploadphotos.executarrotina(uploadphotos.java:81) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.cliente.mainactivity.inicializeuploadfiles(mainactivity.java:128) 10-15 14:24:45.218: w/system.err(14370): @ com.prologica.papirosmart.cliente.mainactivity.onresume(mainactivity.java:479) 10-15 14:24:45.228: w/system.err(14370): @ android.app.instrumentation.callactivityonresume(instrumentation.java:1187) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activity.performresume(activity.java:5326) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread.performresumeactivity(activitythread.java:2599) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread.handleresumeactivity(activitythread.java:2647) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2104) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread.access$600(activitythread.java:138) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread$h.handlemessage(activitythread.java:1205) 10-15 14:24:45.228: w/system.err(14370): @ android.os.handler.dispatchmessage(handler.java:99) 10-15 14:24:45.228: w/system.err(14370): @ android.os.looper.loop(looper.java:137) 10-15 14:24:45.228: w/system.err(14370): @ android.app.activitythread.main(activitythread.java:4954) 10-15 14:24:45.228: w/system.err(14370): @ java.lang.reflect.method.invokenative(native method) 10-15 14:24:45.238: w/system.err(14370): @ java.lang.reflect.method.invoke(method.java:511) 10-15 14:24:45.238: w/system.err(14370): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:798) 10-15 14:24:45.238: w/system.err(14370): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:565) 10-15 14:24:45.238: w/system.err(14370): @ dalvik.system.nativestart.main(native method) 10-15 14:24:45.258: d/dalvikvm(14370): gc_concurrent freed 2929k, 32% free 7694k/11267k, paused 15ms+11ms, total 91ms

the issue here you're trying networking stuff on main (ui) thread of android application. resulting in exception:

android.os.networkonmainthreadexception

the solution run networking code in asynctask. @ this question more information.

android json wcf android-volley

No comments:

Post a Comment