2011-08-03 18 views
34

Javaコードからアプリケーションにログインします。それが戻っページのみログイン、 はここで...JavaでHttps Post要求を送信するには

String httpsURL = "https://www.abcd.com/auth/login/"; 

String query = "email="+URLEncoder.encode("[email protected]","UTF-8"); 
query += "&"; 
query += "password="+URLEncoder.encode("abcd","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()); 



for(int c = input.read(); c != -1; c = input.read()) 
System.out.print((char)c); 
input.close(); 

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

私のコードですが、私はログインできません。

誰かができれば、間違っていることを理解するのを手伝ってください。

+0

con.setRequestProperty("Content-Type","application/x-www- form-urlencoded"); 

正しい(余分なスペースがWWW-フォームの中間にあります)私はあなたのログインページ上のフォームがあるとします。フォームを含むページにデータを送信すると、何も起こりません。フォームデータを送信するページにデータを送信する必要があります。 – 11684

+0

警告:Content-lengthには、バイト単位のサイズが含まれます。 "query"の内容に応じて、query.length()とquery.getBytes()。lengthは同じでも異なっていてもかまいません。後で使用する必要があります。 –

答えて

28

間違っ: -

con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
+0

どちらも同じですが違いは何ですか? – sunleo

+0

OKのスペースがありますか? – sunleo

+1

@sunleo JSONデータをHTTPSリクエストのPOSTデータとして送信する必要があります。 JSONを文字列に変換してoutputStreamに書き込もうとしましたが、リクエストによって400ステータスエラーがスローされました。誰がエラーが何であるか知っていますか? – Muthu

関連する問題