okhttp请求/多部分图像

时间:2017-07-25 07:38:04

标签: android request okhttp

好的,在你开始说它是重复的之前等等...... 我已经尝试了我在松弛/文件上找到的所有方法,但它根本没有帮助我...我只是无法弄清楚问题是什么

所以,这是我尝试提出请求的最后两种方式

    final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
    //RequestBody reqFile = RequestBody.create(MediaType.parse("multipart/form-data"), loadImageFile);
    //MultipartBody.Part filePart = MultipartBody.Part.createFormData("picture", loadImageFile.getName(), reqFile);
    //RequestBody filename = 
    RequestBody.create(MediaType.parse("text/plain"),loadImageFile.getName());
    RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), 
    loadImageFile);
    MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", 
    loadImageFile.getName(), requestBody);

评论的部分是一种方式,其他部分是我现在这样做的方式..

这里我有界面

@Multipart
@POST(RestClient.API_REGISTER_URL)
Call<ResponseBody> register(@Query("name") String name, @Query("email") String email,
@Query("password") String password, @Query("location") String location,
                            @Query("latitude") double latitude, @Query("longitude") double longitude,
                            @Query("gender") String gender, @Part MultipartBody.Part picture,
                            @Part("picture") RequestBody file,
                            @Query("device_uuid") String device_uuid, @Query("device_os") String device_os,
                            @Query("push_token") String push_token, @Query("api_key") String user);

说实话,我简直无法弄清楚为什么它不起作用..来自服务器的响应体是“图片必须是图像”,这让我觉得不知怎的它不识别文件我我发送

任何帮助都会被贬低,谢谢。

修改 我把代码改成了一点点,这是我尝试制作它的另一种方式,而且这个请求还是有些不行......

RequestBody req = new MultipartBody.Builder().setType(MultipartBody.FORM)
            .addFormDataPart("picture", loadImageFile.getName(), RequestBody.create( MultipartBody.FORM, loadImageFile))
            .build();

MultipartBody.Part part = MultipartBody.Part.createFormData("picture", loadImageFile.getName(), req);

1 个答案:

答案 0 :(得分:0)

我使用此代码通过okhttp

将图像发送到服务器
     final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

        RequestBody req = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("branchCode", branchCode)
                .addFormDataPart("upload", "profile.png", RequestBody.create(MEDIA_TYPE_PNG, file)).build();

        Request request = new Request.Builder()
                .url(URLs.UPLOAD_FILE)
                .post(req)
                .build();

您的服务器端可能出现问题吗?