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

Android改装上传文件与授权机构

佴波鸿
2023-03-14

我正在使用改造连接到POST Data中需要授权令牌的服务器。请求示例:

https://adress/inboxes
POST data:
token=jasdf807gb123uy40bviubva08sdyv123&message_id=1&

我使用这样的方法,它的作品很好:

@POST("/inboxes")
    Call<InboxesResponse> getInbox(@Header("Authorization") String authorization, @Header("Content-Type") String contentType, @Body RequestBody body);

我将令牌和其他参数放入RequestBody:

RequestBody body =
                RequestBody.create(MediaType.parse("text/plain"), text.toString());

所有这些都工作正常。但是我不知道如何使用文件上传方法:

Example:
https://adress/fileUpload
POST data:
token=jasdf807gb123uy40bviubva08sdyv123
File body

所以我需要使用MultipartBody.Partfile来上传文件,但是如何将Multipartbody与包含令牌的Request estbody结合起来?或者如何正确地做到这一点?我很困惑...

共有2个答案

荆鸿畅
2023-03-14

这个例子对我很有用。

@Multipart
@Headers("Accept: application/json")
@POST("reports/new")
suspend fun registerReport(@Header("Authorization") access_token:String,
                           @Part("description") description: RequestBody,
                           @Part photo: MultipartBody.Part
) : RegisterResponse

正如您所看到的,access_token不一定是RequestBody类型,您可以传递头部,它的类型可以是String。

仲孙文乐
2023-03-14

好的,答案是:

 @Multipart
    @POST("/fileUpload")
    Call<ResponseBody> uploadFile(@Header("Authorization") String authorization,
                                  @Part("token") RequestBody token,
            @Part MultipartBody.Part file
    );
 类似资料:
  • 接口说明 上传License授权文件 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /wish3dearth/api/access/v1.0.0/updateLicenseInfo 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 license undefined body 是 License信息文件 响应字

  • 接口说明 上传License授权文件 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /wish3dearth/api/access/v1

  • 我确信,所有GET参数都正确写入。我想,问题在于我如何发送文件上传。 接口: 有人能帮我吗?

  • 我一直在尝试将文件上传到s3存储桶。但该文件从未公开供查看。我必须手动将bucket中的文件/文件夹公开(每次上传时),以便查看。 有没有一种方法可以上传一个Android文件(位图),该文件的默认权限是在运行期间公开查看。如果可能的话,我更愿意通过编程来实现这一点。我查看了s3文档,没有找到任何有用的东西。

  • 下面是生成授权字符串的函数: 内容类型为“application/x-www-form-urlencoded”,并生成x-Amz-Date,例如:“201805138T120046Z” 然后通过改装方法将其传递: 结果返回null,我确信这个问题与授权有关,因为它以前工作得很好。 谢谢你的帮助:)

  • 此外,文件浏览器在选择存储在设备本身的图像/PDF时工作,但通过这种方法从Google Drive上传的文件不能正确上传。有什么想法吗?