2011-02-06 16 views
1

ちょっとすべて私はJavaプログラムを使用してhtmlフォームに入力しようとしていますが、実際に私はページを取得することができますが、それをサーバーに書き戻すことはできません。または、サーバーからの応答がなくても、書き戻すことはできません。ここJavaのソケットを使用してhtmlフォームを入力する

import java.net.*; 
import java.io.*; 

public class fillForm{ 
    public static void main(String args[]){ 
     Socket s = null; 
     try{ 
      s = new Socket("localhost", 80); 
      BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
      /****************** 
       Now download the page from the server. 
      ******************/ 
      bw.write("GET /phpsandbox/form.html HTTP/1.1\n"); 
      bw.write("Host: localhost:80\n\n"); 
      bw.flush(); 
      readResponse(br); 
      //now i have read whole input now its time to write output. 
      bw.write("GET /phpsandbox/form.php?uName=hello HTTP/1.1\n"); 
      bw.write("Host: localhost:80\n\n"); 
      bw.flush(); 
      readResponse(br); 
     }catch(IOException e){ 
      System.out.println("IO: " + e.getMessage()); 
     }catch(Exception e){ 
      System.out.println("Exception: " + e.getMessage()); 
     }     
    } 
    public static void readResponse(BufferedReader br){ 
     String newLine; 
     try{ 
      while((newLine = br.readLine())!=null){ 
       System.out.println("Line: " + newLine); 
      } 
     }catch(IOException e){ 
      System.out.println("IO: " + e.getMessage()); 
     } 
    } 
} 

ND form.html

<html> 
<head><title>form</title></head> 
<body> 
<form action="form.php" method="GET"> 
<label>Enter name</label> 
<input name="uName"/> 
<input type="submit" /> 
</form> 
</body> 
</html> 

であり、ここでform.html

<?php 
     //read the response from the client 
     echo "hELLO"; 
     echo $_GET['uName']; 
?> 
と同じフォルダに存在するform.phpある:ここでは

は私のプログラムであります

そしてここに出力があります:

Line: HTTP/1.1 200 OK 
Line: Date: Sun, 06 Feb 2011 13:46:17 GMT 
Line: Server: Apache/2.2.11 (Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0 
Line: Last-Modified: Sun, 06 Feb 2011 13:29:58 GMT 
Line: ETag: "6c3c-b5-49b9d1c8f56c1" 
Line: Accept-Ranges: bytes 
Line: Content-Length: 181 
Line: Content-Type: text/html 
Line: 
Line: <html> 
Line: <head><title>form</title></head> 
Line: <body> 
Line: <form action="form.php" method="GET"> 
Line: <label>Enter name</label> 
Line: <input name="uName"/> 
Line: <input type="submit" /> 
Line: </form> 
Line: </body> 
Line: </html> 

出力プログラムを与えた後に、しばらく待ってから終了します。

ありがとう:)

+0

なぜこれをやっていますか?単純なHTTPサーブレットを書かないのはなぜですか? – AlexR

+1

もっと適切なライブラリ(Apache HTTPComponentsなど)の使用を検討しましたか? http://hc.apache.org/ –

+0

@AlexR:HTTPサーブレットの操作方法 – codeomnitrix

答えて

1

HTTPプロトコルで読み上げます。たとえば、http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.htmlを見てください。私は最初のGETと2番目のGETの間にいくつかの空白行が必要だと思う。

これが失敗した場合は、ソケットを閉じて新しいものを開いてください。

+0

ありがとうiluxa .. :) – codeomnitrix

関連する問題