2012-05-11 57 views
0

我將嵌入式雙引號數據從libcurl客戶端發佈到Tomcat servlet。 servlet讀取數據並將其發送回我的客戶端。如何防止servlet轉義響應中的雙引號

我送看起來像這樣

{ 
    "id": 1, 
    "name": "Foo", 
} 

但我從servlet收到看起來像這樣

{ 
    \"id\": 1, 
    \"name\": \"Foo\" 
} 

即所有的雙引號得到逃過一劫。

如何防止servlet轉義引號? 我的servlet做這樣的事情doPost方法內部

public void doPost(HttpServletRequest request, 
         HttpServletResponse response) 
     throws IOException, ServletException 
{ 
    BufferedReader reader = request.getReader(); 
    StringBuilder content = new StringBuilder(); 
    char[] buffer = new char[4 * 1024]; 
    int len = 0; 
    while (len >= 0) { 
     len = reader.read(buffer, 0, buffer.length); 
     if (len > 0) { 
      content.append(buffer, 0, len); 
     } 
    } 

    PrintWriter out = response.getWriter(); 
    out.print(content.toString()) 
} 

編輯
這解決了我的問題。

URLEncoder.encode(content.toString(),"UTF-8") 
+1

StringBuilder爲空,但是您至少在該方法中附加了它。 – Vulcan

+0

@Vulcan謝謝。固定。這是複製粘貼錯誤,緩衝區在我的代碼中正確初始化。 – user841550

回答

1

在寫入字符串之前對它進行編碼。

+0

這是正確的答案。是否有更新的編碼方法?我使用URLEncoder.encode得到一個deprected警告 – user841550

+0

使用接受編碼作爲第二個參數的'encode'方法。 – Jeremy