如何使用http客户端处理多部分请求

时间:2013-05-02 06:48:39

标签: java apache-httpclient-4.x multipart

以下是我使用Multipart

处理httpclient的代码
if(methodParams.getDataType().length()>0 && methodParams.getDataType().equals("org.springframework.web.multipart.MultipartFile")){
                isMultipart = true; 
                MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
                // For usual String parameters
                entity.addPart( methodParams.getVariableDefined(), new StringBody("".toString() , "text/plain", Charset.forName( "UTF-8" )));
                postURL.setEntity( entity );
             }

但我得到以下例外:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.james.mime4j.util.CharsetUtil.getCharset(Ljava/lang/String;)Ljava/nio/charset/Charset;
    at org.apache.http.entity.mime.MIME.<clinit>(MIME.java:51)
    at org.apache.http.entity.mime.HttpMultipart.<clinit>(HttpMultipart.java:85)
    at org.apache.http.entity.mime.MultipartEntity.<init>(MultipartEntity.java:77)
    at org.apache.http.entity.mime.MultipartEntity.<init>(MultipartEntity.java:96)
    at com.hexgen.tools.HexgenClassUtils.doPOST(HexgenClassUtils.java:151)
    at com.hexgen.reflection.HttpClientRequests.handleHTTPRequest(HttpClientRequests.java:74)
    at com.hexgen.reflection.HexgenWebAPITest.main(HexgenWebAPITest.java:115)

编辑:

以下是我使用的依赖

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.0.1</version>
</dependency>

如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以查看dependencies one more time,也许您错过了一些罐子。

您也可以用newer version of a httpclient along with httpmime替换旧罐子。 httpclient不再依赖于james mime4j since version 4.1

您最终可能会使用maven管理您的依赖项。以防万一你不使用它。

修改

您可以添加以下内容

<dependency>
    <groupId>org.apache.james</groupId>
    <artifactId>apache-mime4j</artifactId>
    <version>0.6</version>
</dependency>