Модифицировать получить дубликат заголовка при использовании динамического заголовка - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь загрузить фотографию на сервер, все довольно хорошо, пока дооснащение не дублирует мой заголовок, передаваемый параметром в метод.

Я тоже использую 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-байтовое тело опущено)
...