我正在使用改造连接到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结合起来?或者如何正确地做到这一点?我很困惑...
这个例子对我很有用。
@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。
好的,答案是:
@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上传的文件不能正确上传。有什么想法吗?