Java Jersey多部分客户端上载
我设计了一个多部分Jersey REST服务,如下所示,用于接收多部分请求(文件上载)并将文件保存在磁盘位置:Java Jersey多部分客户端上载,java,rest,jersey,Java,Rest,Jersey,我设计了一个多部分Jersey REST服务,如下所示,用于接收多部分请求(文件上载)并将文件保存在磁盘位置: @POST @Path("/Upload") @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.MULTIPART_FORM_DATA) public String uploadFile(@FormDataParam("file") InputStream inputStream,
@POST
@Path("/Upload")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFile(@FormDataParam("file") InputStream inputStream,
@FormDataParam("file") FormDataContentDisposition contentDisposition) {
System.out.println("Method Entry");
System.out.println(contentDisposition.getFileName());
String result = "not Success";
File file = null;
if (contentDisposition != null
&& contentDisposition.getFileName() != null
&& contentDisposition.getFileName().trim().length() > 0) {
try {
file = new File("xx"
+ contentDisposition.getFileName());
new File("yy").mkdirs();
file.createNewFile();
OutputStream outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.flush();
outputStream.close();
result = "success";
} catch (Exception e) {
System.out.println(e.toString());
}
}
System.out.println("Method Exit");
return result;
}
我的测试客户是:
Client client = Client.create();
WebResource resource = client
.resource("xyz");
String conString = "This is the content";
FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
formDataMultiPart.field("file", "Testing.txt");
FormDataBodyPart bodyPart = new FormDataBodyPart("file",
new ByteArrayInputStream(conString.getBytes()),
MediaType.APPLICATION_OCTET_STREAM_TYPE);
formDataMultiPart.bodyPart(bodyPart);
String reString = resource.type(MediaType.MULTIPART_FORM_DATA)
.accept(MediaType.TEXT_HTML)
.post(String.class, formDataMultiPart);
System.out.println(reString);
但我无法得到回应
当我使用HTML网页作为客户端通过调用REST服务上传文件时,它工作得很好,但是从REST客户端它不工作
客户机中是否有需要更改的内容 当你说你无法得到回应时,你的确切意思是什么 如果你发送一个文件,你能试试这个吗
FileDataBodyPart fdp = new FileDataBodyPart("file",f,MediaType.APPLICATION_OCTET_STREAM_TYPE);
而且
formDataMultiPart.field("file", "Testing.txt");
例如,不应命名为“文件”,而应命名为“文件名”
对于调试,我建议您使用Wireshark在服务器上进行侦听。如果您没有文件,但有字符串,则解决方法是执行以下操作:
final FormDataMultiPart FormDataMultiPart=new FormDataMultiPart();
最终字符串值=“Hello World”;
最终FormDataContentDisposition dispo=FormDataContentDisposition//
.name(“文件”)//
.fileName(“test.txt”)//
.size(value.getBytes().length)//
.build();
最终FormDataBodyPart bodyPart=新的FormDataBodyPart(dispo,值);
formDataMultiPart.bodyPart(bodyPart);
有人能帮我在上面的测试客户端代码中添加新的头吗?