-2

実際に自分でフォームに記入するのではなく、post コマンドを Web サイトに送信できるようにする Java プログラムを作成しようとしています。しかし、私が現在持っている現在のコードは機能しておらず、応答コード 200 しか返しません。明らかに送信して次のページに移動する必要がありますが、応答コードに基づいていません。フォーム html は次のとおりです。

<div id="email" class="required"><label for="email" >Email Address</label><input  name="email"  value=""  /></div><div id="keyword" class="required"><label for="keyword" >Weekly Keyword</label><input  name="keyword"  value=""  /></div><div id="login" class="required"><label for="login" ></label><input type="image" src="public/images/btn_enter_now.png" name="login" value="Login" /></div>

これまでに書いたコードは次のとおりです。

import javax.net.ssl.HttpsURLConnection;
   import javax.net.ssl.SSLContext;
   import javax.net.ssl.TrustManager;
   import javax.net.ssl.X509TrustManager;
   import java.security.cert.X509Certificate;  
    import java.io.*;
   import java.net.*;
    import javax.net.ssl.*;
    import java.security.*;


   public class CssAttack {

         public static void test() throws NoSuchAlgorithmException, KeyManagementException {
         TrustManager trm = new X509TrustManager() {
               public X509Certificate[] getAcceptedIssuers() {
                  return null;
               }

               public void checkClientTrusted(X509Certificate[] certs, String authType) {

               }

               public void checkServerTrusted(X509Certificate[] certs, String authType) {
               }
            };

         SSLContext sc = SSLContext.getInstance("SSL");
         sc.init(null, new TrustManager[] { trm }, null);
         HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
      }


      public static void main(String[] args) throws IOException {
            try{
                test();
         }
            catch(Exception e){

            }


         String httpsURL = "website";

         String query = "email="+URLEncoder.encode("blah@blah.com","UTF-8"); 
         query += "&";
         query += "keyword="+URLEncoder.encode("PRETZEL","UTF-8");
            query += "&";
            query += "login="+URLEncoder.encode("Login","UTF-8");

         URL myurl = new URL(httpsURL);
         HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
         con.setRequestMethod("POST");

         con.setRequestProperty("Content-length", String.valueOf(query.length())); 
         con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
         con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0;Windows98;DigExt)"); 
         con.setDoOutput(true); 
         con.setDoInput(true); 

         DataOutputStream output = new DataOutputStream(con.getOutputStream());  


         output.writeBytes(query);

         output.close();

         DataInputStream input = new DataInputStream( con.getInputStream() );  

         System.out.println("Resp Code:"+con .getResponseCode()); 
         System.out.println("Resp Message:"+ con .getResponseMessage()); 
      }
    }
4

1 に答える 1

0

クラスHttpUrlConnectionを確認してください。

簡単な例については、次の質問を確認してください。

于 2012-10-25T20:54:35.430 に答える