Я пытаюсь загрузить фотографию на сервер, все довольно хорошо, пока дооснащение не дублирует мой заголовок, передаваемый параметром в метод.
Я тоже использую 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: Content-Type: image / png
- I / NetModule: Content-Length: 698803
- I / NetModule: Content-Disposition: имя = файл; имя файла = 1553668305157.jpg
- I / NetModule: Confirm-Id: 764
- I / NetModule: Широта: 0.0
- I / NetModule: Долгота: 0.0
- I / NetModule: Content-Disposition: имя = файл; имя файла = 1553668305157.jpg
- I / NetModule: Confirm-Id: 764
- I / NetModule: широта: 0,0
- I / NetModule: Долгота: 0.0 I / NetModule: Авторизация: Носитель OToyZThiZWUzM2E4ZjQ1NzllODhkZjg0N2JkNmRmNjFkMGZhZTc1ZDQ4
I / NetModule: -> END POST (двоичное 698803-байтовое тело опущено)
I / NetModule: <- 200 OK I / NetModule: Дата: среда, 27 марта 2019 <br>
06:32:01 GMT I / NetModule: Сервер: WSGIServer / 0.2 CPython / 3.6.7
I / NetModule: Content-Type: application / octet-stream; кодировка = UTF-8
I / NetModule: Разрешить: POST, ОПЦИИ I / NetModule: X-Frame-Options:
SAMEORIGIN I / NetModule: длина содержимого: 75 I / NetModule: <- END <br>
HTTP (двоичное 75-байтовое тело опущено)