在jax-rs webservice中传递特殊字符

时间:2014-10-21 16:33:44

标签: java web-services jax-rs

我有两个jax-rs webservices: WS1 WS2

我还有一个用户添加一些文本的html表单,当点击提交按钮调用WS1或WS2并通过post发送xml文件时。

xml文件如下所示:

<documents>
<document> some text 1 </document>
<document> some text 2 </document>
</documents>

当我从html表单中调用 ws1 ws2 时,xml文件会毫无问题地通过。

但是当我尝试从 ws2 调用 ws1 时,我无法发送包含元素“document”中特殊字符的xml文件。 (不要发送所有xml文件)

所以我的问题是如何传递包含特殊字符的xml文件或如何替换所有特殊字符?

致电wb1

 public String sendPost(String value) throws Exception {
            String url = "http://localhost:8084//wb1";
            URL obj = new URL(url);
            HttpURLConnection con =  (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("POST");
            String urlParameters = "xmlinput=" + value;

            // Send post request
            con.setDoOutput(true);
            java.io.BufferedOutputStream wr = new BufferedOutputStream(con.getOutputStream());
            wr.write(urlParameters.getBytes());
            wr.flush();
            wr.close();

            //response
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
                response.append(inputLine);
            }
            in.close();


            return response.toString();
        }

WB1:

 @POST
 @Produces("application/xml")
 public String getXml(@FormParam("xmlinput") String xmlinput) throws Exception {
     //some code
 }

修改

例如我有这个字符串:

  

RT @ CEJA :CEJA主席@BartoliniMatteo与S&amp; D COMAGRI   协调员@paolodecastro。 @EP_Agriculture @TheProgressives   http://t.co/65xi4 ...

我想替换&amp; amp; amp;与黑色空间。

我尝试使用 String.replaceAll(“\ W”,“”); 但是1)仅替换&amp ;; 2)我想保留链接而不做修改

1 个答案:

答案 0 :(得分:1)

请求Apache Commons Lang org.apache.commons.lang.StringEscapeUtils#escapeXml获取请求,并使用#unescapeXml获取响应。