java - 改造在使用动态标题时获取重复标题
问题描述
我正在尝试将照片上传到服务器,一切都很好,直到将我的标头通过参数传递复制到方法中。
我也使用过 HeaderMap 但仍然重复
public class ImageUploadHelper implements ImageUpload {
private static final int PERCENT_QUALITY = 100;
private Service mService;
public ImageUploadHelper(Retrofit retrofit) {
mService = retrofit.create(Service.class);
}
private Observable<RequestBody> createUploadFunction(File file) {
return Observable.create(emitter -> {
try {
Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, PERCENT_QUALITY, stream);
byte[] buffer = stream.toByteArray();
RequestBody requestBody = RequestBody
.create(MediaType.parse("application/octet-stream"), buffer);
emitter.onNext(requestBody);
} catch (Exception e) {
emitter.onError(e);
}
emitter.onComplete();
});
}
//@SuppressLint("MissingPermission")
@Override
public Observable<ImageUploadResponse> uploadImage(String rule, File file, Integer confirmId) {
Location location = new Location(LocationManager.GPS_PROVIDER);
String fileNames = file.getName();
Observable<RequestBody> func = createUploadFunction(file);
return func.flatMap(rb -> {
String header = "name=file; filename=" + fileNames;
return mService.uploadImage( rule,
header,
Integer.toString(confirmId),
Double.toString(location.getLatitude()),
Double.toString(location.getLongitude()),
rb );
});
}
interface Service {
@Headers({"Content-Type: image/png"})
@POST("query/{rule}/transaction/confirm/image")
Observable<ImageUploadResponse> uploadImage(
@Path("rule") String rule,
@Header("Content-Disposition") String contentDisposition,
@Header("Confirm-Id") String confirmId,
@Header("Latitude") String latitude,
@Header("Longitude") String longitude,
@Body RequestBody photo);
}
}
- I/NetModule: 内容类型: image/png
- I/NetModule:内容长度:698803
- I/NetModule: Content-Disposition: name=file;filename=1553668305157.jpg
- I/NetModule:确认 ID:764
- I/NetModule:纬度:0.0
- I/NetModule:经度:0.0
- I/NetModule: Content-Disposition: name=file;filename=1553668305157.jpg
- I/NetModule:确认 ID:764
- I/NetModule:纬度:0.0
- I/NetModule: Longitude: 0.0 I/NetModule: Authorization: Bearer OToyZThiZWUzM2E4ZjQ1NzllODhkZjg0N2JkNmRmNjFkMGZhZTc1ZDQ4
I/NetModule: --> END POST (binary 698803-byte body省略)
I/NetModule: <-- 200, OK I/NetModule: Date: 2019 年 3 月
06:32:01 GMT I/NetModule: 服务器: WSGIServer/0.2 CPython/3.6.7
I/NetModule: Content-Type: application/octet-stream; charset=utf-8
I/NetModule: Allow: POST, OPTIONS I/NetModule: X-Frame-Options:
SAMEORIGIN I/NetModule: Content-Length: 75 I/NetModule: <-- END
HTTP (二进制 75 字节正文省略)
解决方案
推荐阅读
- amazon-web-services - 使用低基数的排序键有什么缺点吗?
- python - 如何验证 Pika 是否异步工作?
- ninject - Autofac 等效于 NInject 的 ToMethod() 与开放泛型
- python - 雅虎社交登录不起作用 django-allauth
- regex - VBScript - 无法让正则表达式在脚本中匹配,即使正则表达式在在线测试仪中验证
- c# - 在 xunit 测试中模拟与 winforms 相同的 UI 线程
- c++ - 逻辑 && 是否可以很好地替代无分支 POV 中的 if 语句
- android - ViewPager2 滑动选项卡布局不显示片段名称
- python - 用 Python 绘制几种颜色的冲浪图
- cypress - 在柏树中,有没有办法检查一定数量的相同文本或链接实例?