相关疑难解决方法(0)

如何使用Retrofit发送multipart/form-data?

我想将一个文章Android客户端发送到REST服务器.以下是服务器的Python模型:

class Article(models.Model):
    author = models.CharField(max_length=256, blank=False)
    photo = models.ImageField()
Run Code Online (Sandbox Code Playgroud)

以下界面描述了以前的实现:

@POST("/api/v1/articles/")
public Observable<CreateArticleResponse> createArticle(
        @Body Article article
);
Run Code Online (Sandbox Code Playgroud)

现在我想发送带有文章数据的图像.该photo不是的部分文章的型号的Android客户端.

@Multipart
@POST("/api/v1/articles/")
public Observable<CreateArticleResponse> createArticle(
        @Part("article") Article article,
        @Part("photo") TypedFile photo
);
Run Code Online (Sandbox Code Playgroud)

准备API并使用cURL成功测试.

$ curl -vX POST http://localhost:8000/api/v1/articles/ \
    -H "Content-Type: multipart/form-data" \
    -H "Accept:application/json" \
    -F "author=cURL" \
    -F "photo=@/home/user/Desktop/article-photo.png"
Run Code Online (Sandbox Code Playgroud)

当我createArticle()Android客户端发送数据时,我收到一个HTTP 400状态,指出字段是必需/缺失的.

D  <--- HTTP …
Run Code Online (Sandbox Code Playgroud)

android multipartform-data image-uploading retrofit

29
推荐指数
1
解决办法
4万
查看次数