【发布时间】:2019-01-11 17:18:23
【问题描述】:
我正在使用retrofit2,我使用@FormUrlEncoded 通过它发送数据,因为所有内容都作为字符串甚至图像,但是当我将图像集合作为字符串发送时我遇到了一些错误,所以我更改为多部分。
现在我面临的问题是我无法使用多部分发送@Field 字符串。
那么,如何在不对每个字符串都使用 RequestBody 的情况下解决这个问题呢?
这是我的代码
@Multipart
@POST("/androidfiles/insertNews.php")
Call<ResponseBody> uploadImage(@Part MultipartBody.Part file, @Part("name") RequestBody name,
@Field("tArabic") String arabicTitle,
@Field("tEnglish") String englishTitle,
@Field("tRussian") String russianTitle,
@Field("tItalian") String italianTitle,
@Field("dArabic") String arabicDescription,
@Field("dEnglish") String englishDescription,
@Field("dRussian") String russianDescription,
@Field("dItalian") String italianDescription);
这里。
private void insertNews(Uri uri){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ServiceConstants.URL)
.build();
File file = FileUtil.getFile(this, uri);
RequestBody mFile = RequestBody.create(MediaType.parse("image/*"), file);
MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), mFile);
RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
ApiConfig apiConfig = retrofit.create(ApiConfig.class);
Call<ResponseBody> addNews = apiConfig.uploadImage(fileToUpload,
filename,
etArabicTitle.getText().toString(),
etEnglishTitle.getText().toString(),
etRussianTitle.getText().toString(),
etItalianTitle.getText().toString(),
etArabicDescription.getText().toString(),
etEnglishDescription.getText().toString(),
etRussianDescription.getText().toString(),
etItalianDescription.getText().toString());
addNews.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Toast.makeText(News.this, "success" + "\n" + response.message(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(News.this,Menu.class);
startActivity(intent);
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(News.this, "fail" + t.getMessage(), Toast.LENGTH_SHORT).show();
t.printStackTrace();
}
});
}
【问题讨论】: