2017-10-26 2 views
0

Ich versuche, ein Bild auf meinen Server mit dem folgenden Code hochzuladen.Ion Android sendet multipart/form-data

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Ion.with(getContext()) 
        .load("postAddress/account/upload/image") 
        .setMultipartParameter("userPhoto", "xx") 
        .setMultipartFile("upload", "image/jpeg", new File("/storage/emulated/0/Download/images.jpeg")) 
        .asJsonObject() 
        .setCallback(new FutureCallback<JsonObject>() { 
         @Override 
         public void onCompleted(Exception e, JsonObject result) { 
          e.printStackTrace(); 

         } 
        }); 
     } 
    }); 

Allerdings bekomme ich diesen Fehler.

10-26 17:58:51.864 19292-19292/tr.example W/System.err: com.google.gson.JsonParseException: unable to parse json 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.ion.gson.GsonParser$1.transform(GsonParser.java:55) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.ion.gson.GsonParser$1.transform(GsonParser.java:41) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.future.TransformFuture.onCompleted(TransformFuture.java:14) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java:107) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:141) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:128) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.parser.ByteBufferListParser$3.onCompleted(ByteBufferListParser.java:43) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.DataEmitterBase.report(DataEmitterBase.java:16) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.http.AsyncHttpResponseImpl.report(AsyncHttpResponseImpl.java:92) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.http.AsyncHttpClient$4.report(AsyncHttpClient.java:424) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.FilteredDataEmitter$1.onCompleted(FilteredDataEmitter.java:24) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.DataEmitterBase.report(DataEmitterBase.java:16) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.http.filter.ContentLengthFilter.report(ContentLengthFilter.java:16) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.http.filter.ContentLengthFilter.onDataAvailable(ContentLengthFilter.java:39) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.Util.emitAllData(Util.java:23) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.AsyncNetworkSocket.onReadable(AsyncNetworkSocket.java:152) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:821) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:658) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.AsyncServer.access$800(AsyncServer.java:44) 
10-26 17:58:51.864 19292-19292/tr.example W/System.err:  at com.koushikdutta.async.AsyncServer$14.run(AsyncServer.java:600) 

Es sieht aus wie es noch keine Daten auf meinen Server sendet.

Ich bin mit PHP schlanken Rahmen auf der Serverseite

Hier ist der Code;

Die serverseitige Implementierung ist ein Beispiel für einen mehrteiligen/Formulardatencode, der von einem schlanken Framework bereitgestellt wird.

Antwort

0

Ihre PHP-Codes scheint keine Antwort als JSON.
Aber Ihr Android-Code erwartet JSON. Dies könnte eine JSON-Parsing-Ausnahme verursachen.

Wenn Sie also die Android-Seite auflösen möchten, ändern Sie den Code asJsongObject() in asString().

Ion.with(getContext()) 
        ..... 
        .asJsonObject() //<-- before 
        .setCallback(new FutureCallback<JsonObject>() { 

=> 
Ion.with(getContext()) 
       ... 
       .asString() //<-- after 
       .setCallback(...)