在多部分表单调用中,OKHttp中参数的正确位置是什么?

Pet*_*all 7 php forms https android okhttp

我正在尝试使用OKHttp将jpg文件上传复制到PHP服务器上的多部分表单.我相信,我在错误的地方得到了一些参数,我对http和命名法中的多部分形式并不熟悉.

这就是我想要完成的事情

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

然后我用方法POST发出一个多部分表单请求,其中包含以下内容:path:https://www.somesite.com/jpgphotoupload.php

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

mimeType:image/jpeg (我明白了)

不确定以下名称值对应放在多部分表单请求的一部分,尝试使用addFormDataPart

参数:再次上面的参数形式,(myuser,token,types)

name:imagefile

fileName:myname.jpg

此外,这里还有其他可能相关的内容

            "Connection" , "Keep-Alive"
            "ENCTYPE", "multipart/form-data"
            "Content-Type", "multipart/form-data"
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码.

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;
        }
Run Code Online (Sandbox Code Playgroud)

Mik*_*ole 9

就我而言,我需要将视频上传到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();
Run Code Online (Sandbox Code Playgroud)