Ada*_*rsh 1 android json image retrofit retrofit2
上面的屏幕截图包含来自服务器的 Post 方法和响应..在这里我试图将带有一些数据的图像上传到我的服务器(从图库或相机中获取图像)。
我正在尝试通过改造 2 来实现这一点。从互联网上尝试一些方法......但我无法找到正确的方法来完成它
新的改造2。所以我不能这样做。
如何创建retrofit2接口并处理响应..请帮忙
编辑我的尝试
活动中的代码
ProofAPI service = retrofit.create(ProofAPI.class);
File file=new File(sdCard.getAbsolutePath()+fNameAd);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("proof", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
HashMap<String, String> map = new HashMap<>();
map.put("userId", user_id);
map.put("proofDocId", idproofno);
map.put("proofFilename", proofFilename);
map.put("docType", docType);
Call<ProofResp> call = service.uploadFileWithPartMap(map,filePart);
call.enqueue(new Callback<ProofResp>() {
@Override
public void onResponse(Call<ProofResp> call, Response<ProofResp> response) {
Toast.makeText(getApplicationContext(),response.body().getMessage(),Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<ProofResp> call, Throwable t) {
Toast.makeText(getApplicationContext(),"fjkds",Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
Retofit2 接口 -> ProofAPI
@Multipart
@POST("rest-proof-upload")
Call<ProofResp> uploadFileWithPartMap(
@PartMap() Map<String, String> partMap,
@Part MultipartBody.Part file
);
Run Code Online (Sandbox Code Playgroud)
我收到失败消息。这是正确的方法吗..请任何人解释实现它的正确方法。
我做了类似下面的事情:--
我的界面
@Multipart
@POST("your_path")
Call<ProofResp> uploadFileWithPartMap(@PartMap Map<String, RequestBody> params,
@Part("profile_pic\"; filename=\"image.jpeg\"") RequestBody file);
Run Code Online (Sandbox Code Playgroud)
现在我正在创建如下所示的零件图
HashMap<String, RequestBody> map = new HashMap<>();
map.put("userId", toRequestBody(userId));
Run Code Online (Sandbox Code Playgroud)
我的 RequestBody 函数如下:--
public RequestBody toRequestBody(String value) {
RequestBody body = RequestBody.create(MediaType.parse("text/plain"), value);
return body;
}
Run Code Online (Sandbox Code Playgroud)
现在是图像部分
RequestBody file=RequestBody.create(MediaType.parse("image/jpeg"),
createTempFile(your_bitmap));
Run Code Online (Sandbox Code Playgroud)
现在 createTempFile 功能
private File createTempFile(Bitmap bitmap) {
File file = new File(getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis()
+ "_image.jpeg");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
//write the bytes in file
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(bitmapdata);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
Run Code Online (Sandbox Code Playgroud)
现在发送这个文件并映射到你的interface,你会得到响应。希望上面的这个想法能帮助你解决你的问题。
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |