Каковы правильные места для параметров в Ohttp при вызове составной формы?
Я пытаюсь скопировать jpg-файл, загруженный с помощью OKHttp, в составную форму на PHP-сервере. Я считаю, что я получил некоторые параметры в неправильном месте, у меня нет знакомства с составными формами в http и номенклатуре.
Вот что я пытаюсь сделать
Разместить параметры (пары значений name): myuser, token, types to https://www.somesite.com/jpgphotoupload.php
Затем я делаю запрос на составную форму с помощью метод POST, со следующим: путь: https://www.somesite.com/jpgphotoupload.php
Данные файла: JPEG сжатые данные изображения размером 480 x 640 (это я понимаю)
MimeType: image / jpeg (это я понимаю)
Не уверен, где следующие пары значений имен должны быть помещены как часть запроса составных форм, попробовал addFormDataPart
Параметры: снова форма параметра выше, (myuser, token, types)
Имя: imagefile
Имя файла: 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;
}
1 ответ:
В моем случае мне нужно было загрузить видео в корзину 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();