• 締切済み

POSTを使って送信

PICNICServlet3にアクセスすると,名前とIPアドレスとポートのフォームが表示されて,入力してOKボタンをクリックするとPICNICへ送信されるというプログラムを作成しています. 一応作成してみたのですが,http://アドレス/POST.htmlとアドレスバーに打ち込み,フォームに入力してもエラーが出ます. 作成したプログラムです↓ (省略してあります.[;]など足りないときは移動ミスです) public void doGet(...){  DataString=...;  String command=getParameterValue(request,"command");  putFileContents(filename,"request : "+request,true);  putFileContents(filename,"command : "+command,true);  try{   DatagramSocket datagram=new DatagramSocket(); //入力フォームからの名前を受け取り   String s = request.getParameter("NAME");   byte[] a=s.getBytes(); 名前を入れる //入力フォームからIPアドレスを受け取り   InetAddress add=InetAddress.getByName(request.getParameter("IPADDR")); //入力フォームからポートを受け取り   int port=Integer.parseInt(request.getParameter("PORT"));   pot,add,name送信 datagram.send(dpacket); datagram.close(); }エラー表示  携帯で見るための記述,送信したときの表示 }  private String getParameterValue(HttpServletRequest request,String key){   String[] para=request.getParameterValues(key);   if(para!=null&&para.length>=0)    return para[0];    return"";   } エラー表示など省略 } }

みんなの回答

  • deadlock
  • ベストアンサー率67% (59/87)
回答No.1

doGetに書いてあるようですが、フォームのメソッドはGETにしてあるのでしょうか?HTMLに <form method="POST" action="~~ と書いてあるのであれば、サーブレット側はdoPostが呼び出されます。 私はDatagramSocketを使ったことがないので、そちらは詳しい方のアドバイスを待ちましょう…。エラーメッセージや出てくる例外の種類、スタックトレースなどを書いてもらえると、ほかの方も回答しやすいでしょう。

e301
質問者

お礼

回答ありがとうございました。 <form method="POST"となっていましたので変えてみましたが、まだ成功しませんでした。 /アドレス/POST.htmlで実行したとき、エラーは type Status report message /アドレス/PICNICServlet3 description The requested resource(アドレス/PICNICServlet3) is not available. というものです。アドレスバーには送信後、http://略/PICNICServlet3?UNAME=Kei&IPADDR=略&PORT=10となっていました。 /アドレス/PICNICServlet3で実行したときは <携帯で見るための記述,送信したときの表示>の部分に「OK! /PICNICServlet3 」と表示するようにしたので、それがブラウザに表示されていました。

e301
質問者

補足

ちょっと勘違いしており、不明な点がまた出てきましたので、質問を改めさせていただきたいと思います。 1)http://アドレス/PICNICServlet3.javaと打ち、htmlのフォームを表示させたいのですが、それがわかりません。 2)また、htmlファイルから参照したいときは(htmlファイルは2つ上にある) request.getParameter("IPADDR")); このような表記でいいのでしょうか。

関連するQ&A