【问题标题】:Cannot request a post using multipart无法使用多部分请求帖子
【发布时间】:2019-08-21 11:57:19
【问题描述】:

我正在使用 Multipart 执行帖子类型请求。问题是因为我不断收到两个错误

1) 500

2) 422 无法处理的实体

邮递员一切正常

Api 只接受音乐文件。所以我添加了一个默认文件,以免不断选择新文件

RequestBody body = 
             RequestBody.create(MediaType.parse("audio/type"),file);
MultipartBody.Builder builder = new 
MultipartBody.Builder().setType(MultipartBody.FORM);
builder.addPart(body);
GeoService.saveSound(builder.build(), SoundResponseCallback,  
getAuthToken());

还有我的界面

@Multipart
@POST("audios")
Call<SoundResponse> saveSound(
          @Part("audio[file] ; filename=audio.mp3")RequestBody file,
          @Query("auth_token") String authToken);

我将不胜感激。

我找到了Send file to server via retrofit2 as object

【问题讨论】:

  • logcat 中的错误是什么

标签: android retrofit multipart


【解决方案1】:

您必须在 API 中发送 MultipartBody.Part 类型的参数

试试这个:

@Multipart
@POST("audios")
Call<SoundResponse> saveSound(
      @Part MultipartBody.Part file,
      @Query("auth_token") String authToken);

【讨论】:

    【解决方案2】:

    改变这个

    @Part("audio[file] ; filename=audio.mp3")RequestBody file,
    

    @Part MultipartBody.Part audioFile,
    

    还要确保您已启用必要的 READ WRITE 存储权限

    【讨论】:

      【解决方案3】:
      @Multipart
      @POST("audios")
      Call<SoundResponse> saveSound(
               @Part MultipartBody.Part audioFile,
                @Query("auth_token") String authToken);
      

      MultipartBody.Part body = MultipartBody.Part.createFormData("audio/type", file);  
       GeoService.saveSound(body, SoundResponseCallback,  
          getAuthToken());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 2020-11-14
        相关资源
        最近更新 更多