如果要将Strings添加到
FormDataMultiPartjust
.field("name","value")方法中,则使用与用于文件附件相同的方法(queryParam不起作用)。下面是一个工作示例:
首先,服务器部分以字符串形式返回读取文件的内容:
@Path("file")public class FileResource { @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public Response handleUpload(@FormDataParam("file") InputStream stream) throws Exception { return Response.ok(IOUtils.toString(stream)).build(); }}其次,客户端方法发布文件:
public void upload(String url, String fileName) { InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName); FormDataMultiPart part = new FormDataMultiPart().field("file", stream, MediaType.TEXT_PLAIN_TYPE); WebResource resource = Client.create().resource(url); String response = resource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part); assertEquals("Hello, World", response);}三,测试环境:
Server server;@Beforepublic void before() throws Exception { server = new Server(8080); server.addHandler(new WebAppContext(WEB_INF_DIRECTORY, "/")); server.start(); }@Afterpublic void after() throws Exception { server.stop();}@Testpublic void upload() { upload("http://localhost:8080/file", "file.txt");}最后,Maven依赖项:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-multipart</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-embedded</artifactId> <version>6.1.26</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0.1</version> </dependency></dependencies>
该
file.txt是在类路径的根,含有
Hello, World。



