2011-10-05 10 views
16

私は助けが必要です。私の現在の開発では、次のような要求があります。httpResponseの本文に文字列を設定する

サーバーは200-OKを応答(httpresponse)として返します。

パネリストが確認された場合、サーバーは のパネリストIDを返す必要があります。

サーバは次の方法で200-OK 応答の本体内パネリストIDを配置します:

<tdcp> 

<cmd> 

    <ack cmd=”Init”> 

     <panelistid>3849303</panelistid> 

    </ack> 

</cmd> 

今私は

としてのHttpResponseを置くことができています
httpServletResponse.setStatus(HttpServletResponse.SC_OK); 

そして私は置くことができます

String responseToClient= "<tdcp><cmd><ack cmd=”Init”><panelistid>3849303</panelistid></ack></cmd></tdcp>";

上記のxmlを200-OKレスポンスの本体の中に入れて、どのように達成することができますか?

答えて

4

サーブレット応答の出力ストリーム(または出力ライター)を取得し、それに書き込むだけで済みます。詳細については、ServletResponse.getOutputStream()およびServletResponse.getWriter()を参照してください。

(または単に任意のサーブレットのチュートリアル読んで - 次のようにあなたが応答に直接XMLを書くことができレスポンスボディ内のデータを含める機能せず、サーブレットはかなり役に立たないだろう:)

30

を:

この例ではPrintWriterServletResponse.getWriter()を使用して応答に文字列を書き込みます。それがXMLであることを意味しています場合

String responseToClient= "<tdcp><cmd><ack cmd=”Init”><panelistid>3849303</panelistid></ack></cmd></tdcp>"; 

httpServletResponse.setStatus(HttpServletResponse.SC_OK); 
httpServletResponse.getWriter().write(responseToClient); 
httpServletResponse.getWriter().flush(); 
httpServletResponse.getWriter().close(); 
+21

httpServletResponse.getWriter()。close()は良い考えではありません。一般的に、あなたが開いていないストリームを閉じるのは良い考えではありません。 – Tarlog

0

、Wordはすでに代わりの"に属性の引用記号を変更することによって、あなたのために物事を台無しにしています。

Javaを使用してXMLを生成する場合は、JAXPをご覧ください。文字列に<などの文字列を書き込むと、スケールされず、非ASCII文字のエンコーディングに関する問題が発生します。

関連する問題