OKHttp中的参数在多部分窗体调用中的正确位置是什么?

我试图复制一个JPGfile upload使用OKHttp PHP服务器上的多部分forms。 我相信,我在错误的地方得到了一些参数,我不熟悉http中的多部分forms和命名。

这是我想要完成的

发布参数(名称值对):myuser,token,types为https://www.somesite.com/jpgphotoupload.php

然后,我使用POST方法创build一个多部分表单请求,使用以下命令:path: https : //www.somesite.com/jpgphotoupload.php

文件数据:大小为480 x 640的JPEG压缩图像数据(我知道)

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; } 

Solutions Collecting From Web of "OKHttp中的参数在多部分窗体调用中的正确位置是什么?"

就我而言,我需要将video上传到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();