質問
うことにより書サーブレットが送XMLファイル(xml形式の文字列)を他のサーブレットを介します。(必須xml生成コード交換"こんにちはが")
StringBuilder sb= new StringBuilder();
sb.append("Hello there");
URL url = new URL("theservlet's URL");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Length", "" + sb.length());
OutputStreamWriter outputWriter = new OutputStreamWriter(connection.getOutputStream());
outputWriter.write(sb.toString());
outputWriter.flush();
outputWriter.close();
この原因となるサーバエラーのサーブレットにはないメソッドが呼び出されます。
解決
このようなことがいえるでしょうがどうしても必要であるが、ライブラリーを使用してい HttpClient.なものまで、 ポストXMLのコード例:
PostMethod post = new PostMethod(url);
RequestEntity entity = new FileRequestEntity(inputFile, "text/xml; charset=ISO-8859-1");
post.setRequestEntity(entity);
HttpClient httpclient = new HttpClient();
int result = httpclient.executeMethod(post);
他のヒント
私はApacheの使用をお勧めし HTTPClient 代わりに、でもキレイにします。
がこれを解決する現在の問題:み呼び出し connection.setDoOutput(true);
開いたします。
StringBuilder sb= new StringBuilder();
sb.append("Hello there");
URL url = new URL("theservlet's URL");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Length", "" + sb.length());
OutputStreamWriter outputWriter = new OutputStreamWriter(connection.getOutputStream());
outputWriter.write(sb.toString());
outputWriter.flush();
outputWriter.close();
の内容は、HTTPポストアップロードストリームの力学れそうにないから何を期待しています。だけでなくファイルの書き込みとしてのコンテンツを投稿でポストは非常に特定のRFC準のデータに含まれPOSTで要求を送付させていただきます。だけでなく、形式のコンテンツそのもの、それはまた、メカニックの"記述"のoutputstreamに書き込みます。テルのすぐ近くは飲食面では貧弱での時間は今のチャンク.また、ソースコードのApacheのHTTPClientましていませんのでご注意くださを書き込みます塊.
が癖のコンテンツの長さとしての結果では、コンテンツの長さが増加し、少数の特定のチャンクとランダムに小さな文字シーケンスがdelimits各チャンクであり"表記についてストリームです。にその他の方法に記載の新しいJavaのバージョンのHTTPURLConnectionの
http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html#setChunkedStreamingMode(int)
ない場合は何をやっているか分からない学習で対応を追加する依存関係のようにApache HTTPClient本当にそうなのになってくれるので、演題の複雑さといいものです。
も忘れずに使用
connection.setDoOutput( true)
合わせの送信出力に出力します。