如何返回multipart-MIME类型的消息

时间:2013-04-26 06:09:23

标签: java web-services response restful-authentication mime-message

客户端代码....

HttpPost httpPost = new HttpPost();
MultipartEntity multipartEntity = new MultipartEntity();
FormBodyPart xmlPart = new FormBodyPart("soap-req", new StringBody(returnXml(), "text/xml", Charset.forName("UTF-8")));
multipartEntity.addPart(xmlPart);

FormBodyPart attachPart = new FormBodyPart("taxinvoice", new FileBody(attachPartIS));
attachPart.addField("Content-ID", "<attachPart>");
multipartEntity.addPart(attachPart);

httpPost.setEntity(multipartEntity);
httpPost.addHeader("Soapaction", "\"\"");
httpPost.addHeader("Accept", "text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2");

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(soapPost);

客户端将multipart-MIME消息发送到服务器

我想接收clientmessage并返回multipart-MIME类型消息

我在下面试过

@Path("/Contact")
@Consumes("multipart/related")
public class ContactService{
    @POST
    @Produces({"text/xml","application/octet-stream"})
    public Response returnMultiPart(InputStream in) throws Exception{
        .....

        return Response.ok(multipartEntity, MediaType.MULTIPART_FORM_DATA).build();
    }
}

错误消息为A message body writer for Java class org.apac....and MIME media type multipart/form-data was not found

Mapped exception to response: 500 (Internal Server Error)

Plz帮帮我

我只想在我的网络服务上向客户端返回multipart_MIME类型的消息。

1 个答案:

答案 0 :(得分:0)

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

        String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();

        // save it
        writeToFile(uploadedInputStream, uploadedFileLocation);

        String output = "File uploaded to : " + uploadedFileLocation;

        return Response.status(200).entity(output).build();

    }

    // save uploaded file to new location
    private void writeToFile(InputStream uploadedInputStream,
        String uploadedFileLocation) {

        try {
            OutputStream out = new FileOutputStream(new File(
                    uploadedFileLocation));
            int read = 0;
            byte[] bytes = new byte[1024];

            out = new FileOutputStream(new File(uploadedFileLocation));
            while ((read = uploadedInputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            out.flush();
            out.close();
        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}