2010-04-29 82 views
0

我有一個ActionScript文件發送XML到我的servlet。 我只輸出空數組。任何人都知道我做錯了什麼? 輸出是:從動作腳本發送XML到Servlet

java.io.StreamCorruptedException:無效流頭 在java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764) 在java.io.ObjectInputStream中(ObjectInputStream.java:277) 在myDungeonAccessor.myDungeonAccessorServlet.doPost(myDungeonAccessorServlet.java:82)

package myDungeonAccessor; 
     protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException {  
try { 
    System.out.println("HEADERS: " + request.getHeaderNames()); 
    ObjectInputStream in = new ObjectInputStream(request.getInputStream()); 
    System.out.println(in); 
    ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream()); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

異常

+0

將來,請儘量減少代碼片段以僅顯示相關的**代碼。刪除javadocs,刪除所有未標註的行,刪除所有無法解決的方法。關於* actual *問題,儘可能簡短和簡潔(即只顯示*實際使用的*代碼行)。例如,你是否使用過GET或POST等是不清楚的。 – BalusC 2010-04-29 14:50:34

+0

對不起,更新的代碼沒有意義。它實際上沒有任何業務。它只是使用請求標頭名稱來打印枚舉,並且它還打印裝飾請求主體的ObjectInputStream的引用。它實際上不是從請求主體讀取,也不是寫入響應主體。對於「相關」代碼,我的意思是代碼的最小數量,它能夠再現您正面臨的確切問題。你是否明白了每一行代碼到底在做什麼?如果沒有,那麼我會後退一步,先看看。 – BalusC 2010-05-01 04:11:34

+0

我不認爲你理解這個問題.... 我無法檢索到我發送給它的XML。 如何才能正確讀取XML數據?我正在嘗試讀取對象輸入流中的XML .... 我創建了一個ActiomScript文件,它將創建一個XML字符串,並且我想將XML字符串發送到數據庫。我想用一個servlet來做到這一點。我只是在Java端接收XML時遇到了問題。它發送正常,但我不知道如何正確保存XML – 2010-05-01 17:41:31

回答

1

System.out.println()寫入標準輸出(其通常在服務器日誌和/或IDE控制檯結束,如果任何),而不是迴應。改爲寫入response.getWriter()

也就是說,我建議使用XStream來編寫完整的Javabeans到XML without pains

response.setContentType("text/xml"); 
response.setCharacterEncoding("UTF-8"); 
new XStream().toXML(bean, response.getOutputStream()); 
+0

感謝您的建議,讓別人更容易幫助我。 雖然問題是接收數據,我收到異常'java.io.StreamCorruptedException:無效的流頭' – 2010-04-30 03:39:25