我正在编写客户端 - 服务器Android应用程序。我需要通过POST请求将用户(照片)创建的文件发送到服务器。问题是,当我尝试发送文件时,我无法在我的请求中添加POST字段。也许我从根本上说错了,这个操作应该以另一种方式完成?
@FormUrlEncoded
@Multipart
@POST("/answer/add-file")
Call<AbstractServerResponse> sendSingleFile(@Query("access-token") String accessToken,
@Query("w") String screenWidth,
@Field("answer_id") Integer answerId,
@Part("file") File fileToUpload);
当我尝试仅以多部分方式发送文件时,我得到一个例外:
java.lang.IllegalStateException: JSON must start with an array or an object.
据我所知,这是因为请求的正文(主要部分)是空的。
答案 0 :(得分:0)
当方法中存在@Multipart时,使用多部分请求。使用@Part注释声明部件。 ------来自here
我在我的项目中使用@Multipart:
@POST("/{action}")//POST 多个文件
@Multipart
public void PostAPI(
@Path(value = "action", encode = false) String action,
@Part("path") TypedFile[] typedFiles,
@PartMap Map<String, String> params,
Callback<APIResponse> callback);
也许你可以试试这个:
@Multipart
@POST("/answer/add-file")
Call<AbstractServerResponse> sendSingleFile(
@Query("access-token") String accessToken,
@Query("w") String screenWidth,
@Part("answer_id") Integer answerId,
@Part("file") File fileToUpload);
答案 1 :(得分:0)
不能在单个方法上同时使用@FormUrlEncoded
和@Multipart
。 HTTP 请求只能有一个 Content-Type
,而这两个都是内容类型。