Sto cercando di replicare un caricamento di file jpg utilizzando OKHttp in un modulo multipart su un server PHP. Credo, ho ottenuto alcuni dei parametri nel posto sbagliato, non ho la familiarità con i moduli multipart in http e la nomenclatura.Quali sono le posizioni corrette per i parametri in OKHttp in una chiamata modulo multipart?
Ecco quello che sto cercando di realizzare
Messaggio parametri (coppie di valori nome): myuser, token, i tipi di https://www.somesite.com/jpgphotoupload.php
sto poi fare una richiesta di modulo multistrato con metodo POST, con il seguente: percorso: https://www.somesite.com/jpgphotoupload.php
dati di file: i dati JPEG immagine compressa di dimensioni 480 x 640 (Questo ho capito)
mimeType: image/jpeg (Questo comprendo)
Non so dove le seguenti coppie di valori nome dovrebbero essere posizionati come parte della richiesta modulo multistrato, prenotare addFormDataPart
parametri: nuovamente la forma dei parametri di cui sopra, (myUser, token, tipi)
nome: imagefile
filename: myname.jpg
Inoltre, ecco cos'altro può essere pertinente
"Connection" , "Keep-Alive"
"ENCTYPE", "multipart/form-data"
"Content-Type", "multipart/form-data"
Ecco il codice che ho attualmente.
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;
}
Ho bisogno di caricare un video che è la cattura su un dispositivo mobile, in modo da sto indovinando 'quindi .mp4' cosa devo specificare per' RequestBody.create (MediaType.parse ("video/quicktime"), sourceFile) '? utilizzo ancora 'quicktime'? (Non ne so molto dei video) –
e la tua fonte video è solo un file? come in 'new File (myFileName)'? Qui sto assumendo che myFileName è il valore esatto passato prima. –
Sì, la mia sorgente video era '' 'sourceFile''' nel codice fornito (un file video scritto sul disco). IIRC, '' 'myFileName''' è quello che stai dicendo che il nome del file è e può essere qualunque cosa tu voglia che sia. L'oggetto '' 'File''' viene usato per ottenere i dati, ma non penso che l'uri/nome originale sia importante. –