当前位置: 首页 > 知识库问答 >
问题:

改型2.0多部分

尹兴生
2023-03-14

我有工作的OkHttpmultipart请求:

multi = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("email", m)
                .addFormDataPart("password", p)
                .addFormDataPart("user_name", n)
                .addFormDataPart("user_phone", phone)
                .addFormDataPart("photo", "avatar.jpg", RequestBody.create(MediaType.parse("image/jpg"), imgToArray(bmpChosenPic)))
                //.addFormDataPart("photo", "1")
                .build();
        request = new Request.Builder()
                .url(Utils.TEST_BASE_URL + "" + REG_URL)
                .post(multi)
                .build();
        client.newCall(request).enqueue(new Callback()...
@Multipart
@POST("/api/v1/auth/register")
Call<Registration>  registration (@Part("email") RequestBody email,
                                  @Part("password") RequestBody password,
                                  @Part("user_name") RequestBody userName,
                                  @Part("photo") RequestBody url,
                                  @Part("phone") RequestBody phone);
  RequestBody photoR = RequestBody.create(MediaType.parse("image/jpg"), imgToArray(bmp));
    RequestBody nameR = RequestBody.create(MediaType.parse("text/plain"), name);
    RequestBody emailR = RequestBody.create(MediaType.parse("text/plain"), email);
    RequestBody passR = RequestBody.create(MediaType.parse("text/plain"), pass);
    RequestBody phone = RequestBody.create(MediaType.parse("text/plain"), "");
    RegistaionI service = ServiceGenerator.createService(RegistaionI.class);
    retrofit2.Call<Registration> call = service.registration(
            emailR,
            passR,
            nameR,
            photoR,
            phone);
    call.enqueue(new retrofit2.Callback<Registration>() {
        @Override
        public void onResponse(retrofit2.Call<Registration> call, retrofit2.Response<Registration> response) {
            RegistrationData data = response.body().getData();
            System.out.println(data.getId());
        }

        @Override
        public void onFailure(retrofit2.Call<Registration> call, Throwable t) {

        }
    });
 RegistrationData data = response.body().getData();

共有1个答案

皇甫通
2023-03-14

我也很难提出这种要求来工作。我最后用它上传图像或视频:

@Multipart
@POST(Constants.URL_UPLOAD)
Call<ResponseBody> upload(@PartMap Map<String, RequestBody> params);

和方法API调用

private String uploadFile(String path, final String type) throws IOException, JSONException {

    Map<String, RequestBody> map = new HashMap<>();
    map.put("Id", Utils.toRequestBody("0"));
    map.put("Name", Utils.toRequestBody("example"));
    String types = path.substring((path.length() - 3), (path.length()));

    if (path != null) {
        File file2 = new File(path);
        RequestBody fileBody = RequestBody.create(MediaType.parse(type), file2);
        map.put("file\"; filename=\"cobalt." + types + "\"", fileBody);
    }

    Call<ResponseBody> call = cobaltServices.upload(map);
    ResponseBody response = call.execute().body();

    return RESULT_OK;
}
 类似资料:
  • 我尝试用Registfit2.0发出一个多部分请求,将一个图像上传到我的服务器。 现在我有RequestBody和image Byte[] 请求被发送,但我看不到里面的多部分。

  • (1)我使用,而不是,并用发送 (2)使用并用Boolean.true发送。 在这两种情况下,服务器端接收的“is_final”都是Unicode或作为字符串而不是布尔值。 实现这一点的最佳方法是什么

  • 我有像4天,试图提出一个多部分的请求使用改型1.8.0在android与任何成功。我的界面如下所示 最后,我决定这样做,其实我的答案很接近@lazypig,这是一个很好的指导方针 我唯一改变的是他的类“ByteArrayTypedOutput” 我创建了一个名为“MultipartTypedOutputCustom”的类http://pastie.org/10549360

  • 我想发送图像或文件作为多部分请求。但是请求将需要额外的标识符,如Int ID或字符串。我怎样才能发送那些而不为每个API调用制定特定的接口?使用基本API,我可以将这些参数作为文件发送,但是使用时,我必须为特定的API调用创建精确的接口。

  • 我从Android开发网站下载了最新的Android Studio2.0。 但是当我更改一行代码并使用“即时运行”时,它不是更新更改,而是提示我“没有要部署的更改”。 那么,有人有同样的虫子吗?

  • 这是我的密码。它正常工作。但我想上传其他图像类型,如png,jpeg等。因此,我想更改filename=\“file1.jpeg” 我也想同时发送不同数量的文件。 请帮我解决这个问题。谢谢你。