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

用@multipart问题改装@body

夹谷俊远
2023-03-14
{"id":"1","name":"vishal","image/file":""} 
@Multipart
@POST("webservice")
Call<SignUpResp> loadSignupMultipart(@Part("description") RequestBody description, @Part MultipartBody.Part file, @QueryMap HashMap<String, String> params);
{
    "methodName":"submitLevel1Part2Icon",
    "userid":"150",
    "headerData":{
        "fiction":{
            "icon_type":"1",
            "icon_id":"3"},
        "nonfiction":{
            "icon_type":"2",
            "icon_id":"4"},
        "relation":{
            "icon_type":"3",
            "icon_id":"0",
            "name":"Ronak",
            "relative_image":"<File>",
            "relation_id":"3"},
        "self":{
            "icon_type":"4",
            "icon_id":"0"}
    }
}
 @Multipart
 @POST("webservice")
 Call<SubmitLevel1Part2IconResp> loadLevel1halfIconswithImage(@Part("description") RequestBody description, @Part MultipartBody.Part file, @Body UploadwithImage uploadImage);
    /**
     * code for multipart
     */
     // create RequestBody instance from file
     RequestBody requestFile =  RequestBody.create(MediaType.parse("multipart/form-data"), fileUpload);

     // MultipartBody.Part is used to send also the actual filename
     MultipartBody.Part body =  MultipartBody.Part.createFormData("methodName[headerData][relation][relative_image]", fileUpload.getName(), requestFile);

     // add another part within the multipart request
     String descriptionString = "hello, this is description speaking";
     RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), descriptionString);

    call = service.loadLevel1halfIconswithImage(description, body, levelOneHalfIcons);

如有任何帮助,不胜感激。

共有1个答案

仲君昊
2023-03-14

将方法更改为

@Multipart
@POST("users/{id}/user_photos")
Call<models.UploadResponse> uploadPhoto(@Path("id") int userId, @PartMap Map<String, RequestBody> params);

现在要创建请求参数,

//All the String parameters, you have to put like
Map<String, RequestBody> map = new HashMap<>();
map.put("methodName", toRequestBody(methodName));
map.put("userid", toRequestBody(userId));
map.put("relation", toRequestBody(relation));
map.put("icon_type", toRequestBody(iconType));
map.put("icon_id", toRequestBody(iconId));
map.put("name", toRequestBody(name));
map.put("relation_id", toRequestBody(relationId));

//To put your image file you have to do
File file = new File("file_name");
RequestBody fileBody = RequestBody.create(MediaType.parse("image/png"), file);
map.put("relative_image\"; filename=\"some_file_name.png\"", fileBody);

// This method  converts String to RequestBody
public static RequestBody toRequestBody (String value) {
    RequestBody body = RequestBody.create(MediaType.parse("text/plain"), value);
    return body ;
}

//To send your request
call = service.loadLevel1halfIconswithImage(description, params);

如果您不想使用PartMap,您可以简单地将它们作为参数传递。查看我的答案https://stackoverflow.com/a/37052548/1320616,以获得关于发送带有请求的图像文件的一些线索。

 类似资料:
  • 在phpinfo中有在php -m中没有 先确认CLI模式下是否有,命令行输入php --ri swoole 如果输出了Swoole的扩展信息就说明你安装成功了! 99.999%的人在此步成功就可以直接使用swoole了 不需要管php -m或者phpinfo网页打印出来是否有swoole 因为Swoole是运行在cli模式下的,在传统的fpm模式下功能十分有限 fpm模式下任何异步/协程等主要功

  • 我遵循本教程安装Hadoop。不幸的是,当我运行start all时。sh脚本-控制台上打印了以下错误: 当我执行JPS命令时,抛出了以下错误 我是hadoop新手,请给我指一篇文章,这篇文章将帮助我安装hadoop而不会出现问题 或者,如果可能(更可取)解决所面临的问题,请让我知道出现了什么问题以及如何解决?

  • 如果Sphinx构建失败,请您按照以下步骤进行: 确认您的DBMS的头文件和库文件都正确安装了(例如,检查mysql-devel包已经安装) 报告Sphinx的版本和配置文件(别忘了删除数据库连接密码),MySQL(或PostgreSQL)配置文件信息,gcc版本,操作系统版本和CPU类型(例如x86、x86-64、PowerPC等): mysql_config gcc --version una

  • aiohttp支持功能完备的Multipart读取器和写入器。这俩都使用流式设计,以避免不必要的占用,尤其是处理的载体较大时,但这也意味着大多数I/O操作只能被执行一次。 读取Multipart响应 假设你发起了一次请求,然后想读取Multipart响应数据: async with aiohttp.request(...) as resp: pass 首先,你需要使用MultipartR

  • 我对使用Android上的泽西客户端API的Multipart表单数据POST请求有问题。我一直在关注网络上的各种示例,它们在实现方面都非常相似。 当我在设备上执行这段代码时,出现了一个异常: 我以为Jersey应该在没有任何额外配置的情况下处理文件对象。删除车身线条将允许Jersey提出请求,但这消除了这一点。 我的构建路径上有这些库(它们是由Maven引入的): < li >球衣-客户端-1.

  • 本文向大家介绍Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题,包括了Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题的使用技巧和注意事项,需要的朋友参考一下 在安装MySQL时遇到几个问题,网上查找的答案大同小异,并没有很好的解决我的问题,完成之余记录下来方便以后查看。 1.官网下载8.0.16版本MySQL 2.解压缩并将解压的文