如何替换已弃用的 okhttp.RequestBody.create()
How to replace deprecated okhttp.RequestBody.create()
我尝试使用 Retrofit 2 和 OkHttp3 将图像从 Android 应用程序上传到 Django 服务器。
为此,我曾经使用以下行创建一个 RequestBody
实例:
RequestBody requestImageFile =
// NOW this call is DEPRECATED
RequestBody.create(
MediaType.parse("image/*"),
// a File instance created via the path string to the image
imageFile
);
我在下一个方法调用中使用了前一个实例作为参数:
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part image = MultipartBody.Part.createFormData("image", imageFile.getName(), requestImageFile);
最后,我启动了 Retrofit 界面来完成剩下的工作:
// finally, execute the request
Call<ResponseBody> call = service.upload(image);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.v("Upload", "success");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("Upload error:", t.getMessage());
}
});
几个月前,Android Studio 没有告诉我 create()
已被弃用。当我现在打开项目时,它告诉我 create()
已弃用。有人知道如何解决吗?
只需交换
中的参数
RequestBody.create(MediaType.parse("image/*"), imageFile);
至
RequestBody.create(imageFile, MediaType.parse("image/*"));
您可以更改为:
RequestBody.create(MediaType.parse("image/*"), imageFile);
至:
RequestBody.Companion.create(imageFile, MediaType.parse("image/*"))
以下是使用 okhttp 的 kotlin 扩展函数轻松实现的方法,例如:
toRequestBody():
更改自:
val requestImageFile = RequestBody.create(
MediaType.parse("image/*"),
imageFile
);
对此:
val requestImageFile = imageFile.toRequestBody(MediaType.parse("image/*"))
'
更多信息在这里:https://square.github.io/okhttp/upgrading_to_okhttp_4/
您也可以使用 Kotlin 扩展。
val requestImageFile = imageFile.asRequestBody("image/*".toMediaTypeOrNull())
我尝试使用 Retrofit 2 和 OkHttp3 将图像从 Android 应用程序上传到 Django 服务器。
为此,我曾经使用以下行创建一个 RequestBody
实例:
RequestBody requestImageFile =
// NOW this call is DEPRECATED
RequestBody.create(
MediaType.parse("image/*"),
// a File instance created via the path string to the image
imageFile
);
我在下一个方法调用中使用了前一个实例作为参数:
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part image = MultipartBody.Part.createFormData("image", imageFile.getName(), requestImageFile);
最后,我启动了 Retrofit 界面来完成剩下的工作:
// finally, execute the request
Call<ResponseBody> call = service.upload(image);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.v("Upload", "success");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("Upload error:", t.getMessage());
}
});
几个月前,Android Studio 没有告诉我 create()
已被弃用。当我现在打开项目时,它告诉我 create()
已弃用。有人知道如何解决吗?
只需交换
中的参数RequestBody.create(MediaType.parse("image/*"), imageFile);
至
RequestBody.create(imageFile, MediaType.parse("image/*"));
您可以更改为:
RequestBody.create(MediaType.parse("image/*"), imageFile);
至:
RequestBody.Companion.create(imageFile, MediaType.parse("image/*"))
以下是使用 okhttp 的 kotlin 扩展函数轻松实现的方法,例如: toRequestBody():
更改自:
val requestImageFile = RequestBody.create(
MediaType.parse("image/*"),
imageFile
);
对此:
val requestImageFile = imageFile.toRequestBody(MediaType.parse("image/*"))
' 更多信息在这里:https://square.github.io/okhttp/upgrading_to_okhttp_4/
您也可以使用 Kotlin 扩展。
val requestImageFile = imageFile.asRequestBody("image/*".toMediaTypeOrNull())