Java 自定义MimeType文件不会使用HttpComponent上载

Java 自定义MimeType文件不会使用HttpComponent上载,java,http,uploading,Java,Http,Uploading,好的,我正在尝试使用Java/ApacheHttpComponents将音频文件上传到服务器。服务器要求该文件的MimeType为audio/wav。以下是我正在尝试的: File file = new File("testfile2.wav"); HttpPost httpPost = new HttpPost(uploadURL); HttpResponse httpResponse; String htmlResponse

好的,我正在尝试使用Java/ApacheHttpComponents将音频文件上传到服务器。服务器要求该文件的MimeType为audio/wav。以下是我正在尝试的:

        File file = new File("testfile2.wav");

        HttpPost httpPost = new HttpPost(uploadURL);
        HttpResponse httpResponse;
        String htmlResponse = "";

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

        FileBody fileBody = new FileBody(file, ContentType.create("audio/wav"));

        builder.addPart("mediaListForm.mediaForms[0].description", new StringBody("RBT Name", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].artistId", new StringBody("2649", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].categoryId", new StringBody("2", ContentType.TEXT_PLAIN));
        builder.addPart("mediaListForm.mediaForms[0].file;", fileBody);


        httpPost.setEntity(builder.build());
若我并没有指定MimeType,那个么默认的MimeType将作为应用程序/八位字节流发送,服务器将拒绝我的请求。如果我将mime类型指定为上述新FileBodyfile,ContentType.createaudio/wav;然后,服务器表示mediaListForm.mediaForms[0]文件字段的值无效。我尝试调试并探索了如下请求对象:

------WebKitFormBoundaryqQFxF4y3FTYY3pEf
Content-Disposition: form-data; name="mediaListForm.mediaForms[0].file";
Content-Type: audio/wav

我的请求中缺少文件名,有什么建议吗?

不确定为什么下面的方法不起作用:

builder.addPart("mediaListForm.mediaForms[0].file", fileBody);
//If filebody contains custom contentType it does not work otherwise file is uploaded but server rejects it because of invalid contentType
现在有多种方法可以将文件添加到我们的实体中,有些方法需要FileInputStream,有些方法需要file,使用服务器所需的方法,就像我尝试FileInputStream一样。it服务器抛出了一个异常,我发现我必须改为发送文件,所以这个方法非常有效

builder.addBinaryBody("mediaListForm.mediaForms[0].file", file, ContentType.create("audio/wav"), rbt.getFullPath());