改进2解析传出数据

时间:2016-10-11 06:50:30

标签: android retrofit

Hello Stackoverflow的老大家! 这是我的第一篇文章,真的是Retrofit 2的大问题 我希望有些人帮助解决这个问题。

这是我的界面类:

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

和apimanager类:

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());
        }
    });
}

我以这种方式使用代码:

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

最后我的HttpLoggingInterceptor显示这个我无法找到什么以及如何在我的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: - &gt; 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:内容类型:   多部分/格式的数据;边界= 66e09d68-b88d-4ace-b978-a56e1a6ab66b   10-11 03:50:41.244 1393-2102 / transfer.com.bermou D / OkHttp:   内容长度:59914 10-11 03:50:41.244 1393-2102 / transfer.com.bermou   W / dalvikvm:VFY:无法找到签名中引用的类   (Ljava / nio / file / Path;)10-11 03:50:41.244   1393-2102 / transfer.com.bermou W / dalvikvm:VFY:无法找到课程   签名中引用([Ljava / nio / file / OpenOption;)10-11   03:50:41.244 1393-2102 / transfer.com.bermou I / dalvikvm:找不到   方法java.nio.file.Files.newOutputStream,从方法引用   okio.Okio.sink 10-11 03:50:41.244 1393-2102 / transfer.com.bermou   W / dalvikvm:VFY:无法解析静态方法35770:   Ljava / NIO /文件/文件; .newOutputStream   (Ljava / NIO /文件/路径; [Ljava / NIO /文件/ OpenOption;)Ljava / IO / OutputStream中;   10-11 03:50:41.244 1393-2102 / transfer.com.bermou D / dalvikvm:VFY:   在0x000b 10-11 03:50:41.244处替换操作码0x71   1393-2102 / transfer.com.bermou W / dalvikvm:VFY:无法找到课程   签名中引用(Ljava / nio / file / Path;)10-11 03:50:41.248   1393-2102 / transfer.com.bermou W / dalvikvm:VFY:无法找到课程   签名中引用([Ljava / nio / file / OpenOption;)10-11   03:50:41.248 1393-2102 / transfer.com.bermou I / dalvikvm:找不到   方法java.nio.file.Files.newInputStream,从方法引用   okio.Okio.source 10-11 03:50:41.248 1393-2102 / transfer.com.bermou   W / dalvikvm:VFY:无法解析静态方法35769:   Ljava / NIO /文件/文件; .newInputStream   (Ljava / NIO /文件/路径; [Ljava / NIO /文件/ OpenOption;)Ljava / IO / InputStream的;   10-11 03:50:41.248 1393-2102 / transfer.com.bermou D / dalvikvm:VFY:   替换操作码0x71在0x000b 10-11 03:50:41.268   1393-2102 / transfer.com.bermou D / dalvikvm:GC_FOR_ALLOC获得2130K,   30%免费7056K / 9952K,暂停4ms,总计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-1103:50:41.272   1393-2102 / transfer.com.bermou D / OkHttp:   %安培;'()* 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
  10-11 03:50:41.272 1393-2102 / transfer.com.bermou D / OkHttp:    w !1AQaq“2 B #3R br 10-1103:50:41.272   1393-2102 / transfer.com.bermou D / OkHttp:   $ 4%&安培;'()* 56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?XPO J +2yrɆpVBQv0\ BS4   10-11 03:50:41.272 1393-2102 / transfer.com.bermou D / OkHttp:    r I TӍ Js )( ߻Rq } l, q10-1103:50:41.272   1393-2102 / transfer.com.bermou D / OkHttp:    ] \I C C #% e \ 2 5 r 㒝H 8ڔe 10-11 03:50:41.272   1393-2102 / transfer.com.bermou D / OkHttp:   / i sn Vnץ %( f B S zr &lt; Fu s WEND   POST(59914字节正文)    ================================================== ================================================== ===============

我无法找到从改造2.1.0到我的restApi以及哪个部分是我的字符串或图像数据的内容? 我确实根据stackoverflow提示和另一个网站改变了很多时间,但我的结果几乎相同! (我做了从拦截器日志传出的二进制短图像) 如果有人有想法请分享。感谢

1 个答案:

答案 0 :(得分:0)

您是否尝试过直接在服务电话中使用:

mainDir <- "~/Documents/R/Images" 
subDir <- "Logo"
color <- "blue`
file.path(mainDir, subDir, paste(color, ".png",sep=""))

...

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

并更新:

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

另一件事,如果你想看到你对restApi的电话,你可以使用Charles Proxy作为反向代理并查看你的电话和回复。