Как правильно расположить параметры в OKHttp при вызове из нескольких частей?

Я пытаюсь реплицировать загрузку файла jpg с помощью OKHttp в составную форму на сервере PHP. Я считаю, что я получил некоторые параметры в неправильном месте, я не знаком с многочастными формами в http и номенклатуре.

Вот что я пытаюсь сделать

Разместите параметры (пары имя-значение):
myuser, токен, типы для https://www.somesite.com/jpgphotoupload.php

Затем я делаю многочастный запрос формы с методом POST со следующим:
дорожка: https://www.somesite.com/jpgphotoupload.php

данные файла: JPEG сжатые данные изображения размером 480 x 640 (Это я понимаю)

mimeType: изображение / JPEG (Это я понимаю)

Не уверен, где следующие пары значений имени должны быть размещены как часть многочастного запроса формы, пробовал addFormDataPart

параметры: снова форма параметров выше, (myuser, token, types)

имя: файл изображения

имя_файла: myname.jpg

Кроме того, вот что еще может быть уместным

            "Connection" , "Keep-Alive""ENCTYPE", "multipart/form-data""Content-Type", "multipart/form-data"

Вот код, который у меня есть в настоящее время.

MediaType MEDIA_TYPE_JPG = MediaType.parse("image/jpg");

OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"imagefile\""),
RequestBody.create(MEDIA_TYPE_JPG, new File("/storage/emulated/0/download/camerapic.jpg")))
.addFormDataPart("myuser", getprefmyuser(getBaseContext()))
.addFormDataPart("token", getpreftoken(getBaseContext()))
.addFormDataPart("types", "type1")
.addFormDataPart("fileName", "myname.jpg")
.build();

Request request = new Request.Builder()
.header("myuser", getprefmyuser(getBaseContext()))
.header("token", getpreftoken(getBaseContext()))
.header("type", "car")
.url("https://www.somesite.com/jpgphotoupload.php")
.post(requestBody)
.build();

Response response = null;
try {
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
...

return null;
}

7

Решение

В моем случае мне нужно было загрузить видео в корзину Amazon S3. Это то, что сработало для меня.

File sourceFile = new File(myUri);

RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("keyOne", "valueOne")
.addFormDataPart("keyTwo", "valueTwo")
.addFormDataPart("file", "myFileName", RequestBody.create(MediaType.parse("video/quicktime"), sourceFile))
.build();
9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]