多部分表单数据的客户端,以HTML作为响应发送到Rest WS

时间:2018-09-04 09:29:10

标签: java rest web-services java-ee

我正在尝试调用网络服务,该服务会返回该应用程序的html页面, 如何在Java客户端中处理此问题,以便应将html返回到我的应用程序UI。 我尝试使用临时重定向。 下面是我的代码:

final MultiPart multiPart = new FormDataMultiPart()
            .field("msg", espXML, MediaType.APPLICATION_XML_TYPE)
            .field("obj", "", MediaType.TEXT_PLAIN_TYPE);
    multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE);


    return Response.temporaryRedirect(new URI("https://10.10.10.62:8080/abcde/1.2/wstest/"))
          //  .status(302)
            .entity(multiPart).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS")
            .header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With")
            .header("Access-Control-Allow-Credentials", "true")
            .build();

严重:映射的响应异常:500(内部服务器错误)     javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类com.sun.jersey.multipart.FormDataMultiPart和Java类型类com.sun.jersey.multipart.FormDataMultiPart的消息正文编写器,以及找不到MIME媒体类型application / x-www-form-urlencoded

1 个答案:

答案 0 :(得分:1)

您必须像这样对MediaType的{​​{1}}进行注释:

Response

@POST
@Produces({MediaType.TEXT_HTML})
public InputStream yourFormMethod(...) {
   // your processing with your MultiPart
   File f = getHtmlFile();
   return new FileInputStream(f);
}

并确保使用@POST @Produces({MediaType.TEXT_HTML}) public String yourFormMethod(...) { // your processing with your MultiPart String yourHtml = "<head>...</head>"; return yourHtml; } JAX-RS而不是@Produces