2016-10-11 3 views
0

Hallo Stackoverflow's Guys! Dies ist mein erster Beitrag und ist wirklich mein großes Problem mit Retrofit 2 Ich hoffe, dass einige Jungs helfen, das zu lösen.Retrofit 2 analysierende ausgehende Daten

das ist meine Interface-Klasse:

public interface PicUploadInterface { 
@Multipart 
@POST("user") 
Call<UserModelResponse> uploadMultipleFiles(@Part("Authorization") RequestBody authorization, 
          @Part("description") RequestBody description, 
          @Part MultipartBody.Part filePart); 

und apimanager Klasse:

public class Apimanager { 

public static void upload(String coda, File file) { 
    // create upload service client 
    final String API_BASE_URL = "http://10.0.3.2/web2Demo/public/"; 
    OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 

    HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); 
    // set your desired log level 
    logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
    httpClient.addInterceptor(logging); 

    Retrofit builder = 
      new Retrofit.Builder() 
        .baseUrl(API_BASE_URL) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(httpClient.build()) 
        .build(); 

    PicUploadInterface service = builder.create(PicUploadInterface.class); 
    RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); 

    MultipartBody.Part filePart = MultipartBody.Part.createFormData("uploaded_file", file.getName(), requestFile); 

    String descriptionString = coda; 
    String AuthString = "Send picture"; 
    RequestBody description = RequestBody.create(MediaType.parse("text/plain"), descriptionString); 
    RequestBody authorization = RequestBody.create(MediaType.parse("text/plain"), AuthString); 

    Call<UserModelResponse> call = service.uploadMultipleFiles(authorization, description, filePart); 
    call.enqueue(new Callback<UserModelResponse>() { 
     @Override 
     public void onResponse(Call<UserModelResponse> call, 
           Response<UserModelResponse> response) { 
      Log.v("Upload", "success"); 
     } 
     @Override 
     public void onFailure(Call<UserModelResponse> call, Throwable t) { 
      Log.e("Upload error:", t.getMessage()); 
     } 
    }); 
} 

und ich auf diese Weise unter Verwendung von Code:

 File file = new File(textViewFile.getText().toString()); // getting this string "/storage/emulated/0/bichooser/1476172212892.jpg" 
     connectivity.com.pack.Apimanager.upload(name, file); 

und schließlich meinen HttpLoggingInterceptor diese zeigt, dass Ich kann nicht finden, was ist und wie pars es in meinem RestApi

10-11 03: 50: 12,944 1393-1681/transfer.com.bermou D/pager.tab.component.RegisterFormFragments: onImageChosen: /storage/emulated/0/bichooser/1476172212892.jpg 10- 11 03: 50: 41.236 1393-2102/transfer.com.bermou D/OkHttp: -> POST http://10.0.3.2/web2Demo/public/user http/1.1 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou D/OkHttp : Content-Type: multipart/form-data; Grenze = 66e09d68-b88d-4ace-b978-a56e1a6ab66b 10-11 03: 50: 41,244 1393-2102/transfer.com.bermou D/OkHttp: Inhalt-Länge: 59914 10-11 03: 50: 41.244 1393-2102 /transfer.com.bermou W/dalvikvm: VFY: Die in der Signatur angegebene Klasse kann nicht gefunden werden (Ljava/nio/file/Path;) 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou W/dalvikvm: VFY: Klasse nicht gefunden, auf die in der Signatur verwiesen wird ([Ljava/nio/file/OpenOption;) 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou I/dalvikvm: Konnte nicht finden Methode java.nio.file.Files.newOutputStream, referenziert von Methode okio.Okio.sink 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou W/dalvikvm: VFY: statische Methode 35770 kann nicht aufgelöst werden : Ljava/nio/Datei/Dateien; .newOutputStream (Ljava/nio/Datei/Pfad; [Ljava/nio/Datei/OpenOption;) Ljava/io/OutputStream; 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou D/dalvikvm: VFY: Opcode 0x71 bei 0x000b ersetzen 10-11 03: 50: 41.244 1393-2102/transfer.com.bermou W/dalvikvm: VFY: Klasse nicht referenziert in Signatur (Ljava/nio/Datei/Pfad;) 10-11 03: 50: 41.248 1393-2102/transfer.com.bermou W/dalvikvm: VFY: Klasse kann nicht gefunden werden referenziert in Signatur ([Ljava/nio/file/OpenOption;) 10-11 03: 50: 41.248 1393-2102/transfer.com.bermou I/dalvikvm: Konnte Methode java.nio.file.Files nicht finden. newInputStream, referenziert von Methode okio.Okio.source 10-11 03: 50: 41.248 1393-2102/transfer.com.bermou W/dalvikvm: VFY: statische Methode kann nicht aufgelöst werden 35769: Ljava/nio/f ile/Dateien; .newInputStream (Ljava/nio/Datei/Pfad; [Ljava/nio/Datei/OpenOption;) Ljava/io/InputStream; 10-11 03: 50: 41.248 1393-2102/transfer.com.bermou D/dalvikvm: VFY: Opcode 0x71 bei 0x000b ersetzen 10-11 03: 50: 41.268 1393-2102/transfer.com.bermou D/dalvikvm: GC_FOR_ALLOC befreit 2130K, 30% frei 7056K/9952K, pausiert 4ms, insgesamt 4ms 10-11 03: 50: 41.272 1393-2102/transfer.com.bermou D/OkHttp: JFIF C 10-11 03: 50: 41.272 1393-2102/transfer.com.bermou D/OkHttp: } ! 1AQa "q2 # B R $ 3br 10-11 03: 50: 41.272 1393-2102/transfer.com.bermou D/OkHttp: % & '() * 456789: CDEFGHIJSTUVWXYZcdefghijstuvwxyz
März 10-11: 50: 41,272 1393-2102/transfer.com.bermou D/OkHttp: w 1AQaq 2B " # 3R br 10-11 03: 50: 41.272 1393-2102/transfer.com.bermou D/OkHttp: $ 4 % & '() * 56789: CDEFGHIJSTUVWXYZcdefghijstuvwxyz PO J + 2yr Ɇ pVBQv 0 \ Bs 4 März 10-11: 50: 1393-2102 41,272/transfer.com.bermou D/OkHttp: rITӍJs) (߻ Rq} l, q März 10-11: 50: 41,272 1393-2102/transfer.com.bermou D/OkHttp: ] \ ICC#% e \ 25r㒝 H 8 ڔ e März 10-11: 50: 41,272 1393-2102/transfer.com.bermou D/OkHttp: /isnVn ץ% (fBSzr < FusW END POST (59914-Byte-Körper) ============================== =================================================

Ich kann nicht finden, was von Retrofit 2.1.0 meinen restApi Ausgehen ist und welcher Teil ist meine Zeichenfolge oder Bilddaten? Ich habe viel Zeit geändert, basierend auf stackoverflow Tipps und einer anderen Seite, aber mein Ergebnis war fast das gleiche! (Ich tat kurze Bild binäre ausgehend von Interceptor Log) Wenn jemand Idee haben, teilen Sie das bitte. Dank

+0

Welche Antwort erhalten Sie beim Retrofit Callback? – darwin

+0

in der Tat mein großes Problem bei der Veröffentlichung von Daten und in dieser Zeit Antwort ist nicht wichtig für mich. – CodeSqueezer

Antwort

0

Haben Sie versucht, direkt in Ihrem Service-Aufruf:

RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); 

...

Call<UserModelResponse> call = service.uploadMultipleFiles(authorization, description, requestFile); 

und Aktualisierung dieses:

@Multipart 
@POST("user") 
Call<UserModelResponse> uploadMultipleFiles(@Part("Authorization") RequestBody authorization, 
          @Part("description") RequestBody description, 
          @Part("file\"; filename=\"myFilename\" ") RequestBody filePart); 

Eine andere Sache, wenn Sie wollen Sehen Sie Ihre Anrufe zu Ihrem RestApi können Sie Charles Proxy als Reverse-Proxy verwenden und sehen Sie Ihre Anrufe und Antworten.

+0

mein Problem immer noch nicht lösen und okhhtp Protokoll beginnend mit Content-Type: Multipart/Form-Daten; boundary = 66e09d68-b88d-4ace-b978-a56e1a6ab66b und dosnt beinhalten Autorisierung, Beschreibungs-Tag und in Fortsetzung ( ) Bild-Byte-Codes! – CodeSqueezer