要在Android中使用Retrofit发送包含图片的HTTP请求,你可以使用Multipart请求体。下面是一个示例代码:
首先,确保你已经在项目的build.gradle文件中添加了Retrofit和OkHttp的依赖项:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
然后,创建一个包含图片的Multipart请求体。这里假设你已经有一个名为imageFile
的File对象,代表要上传的图片文件:
val requestFile = RequestBody.create(MediaType.parse("image/*"), imageFile)
val body = MultipartBody.Part.createFormData("image", imageFile.name, requestFile)
接下来,在Retrofit的接口中定义上传图片的方法。这里假设你的服务器端使用uploadImage
作为上传图片的API路径:
interface ApiService {
@Multipart
@POST("uploadImage")
fun uploadImage(
@Part image: MultipartBody.Part
): Call
}
然后,创建Retrofit实例,并使用这个实例创建接口的实例:
val retrofit = Retrofit.Builder()
.baseUrl("http://your-api-base-url.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(OkHttpClient.Builder().build())
.build()
val apiService = retrofit.create(ApiService::class.java)
最后,使用接口实例调用上传图片的方法,传入之前创建的Multipart请求体:
val call = apiService.uploadImage(body)
call.enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
// 处理成功响应
}
override fun onFailure(call: Call, t: Throwable) {
// 处理失败响应
}
})
这是一个基本的示例,你可以根据你的需求进行修改和扩展。记得替换API的基本URL和API路径。