如何在java中发送Https Post请求

时间:2011-08-03 13:44:26

标签: java http-post httpurlconnection

我想从java代码登录应用程序。 这是我的代码......

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

String query = "email="+URLEncoder.encode("abc@xyz.com","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()); 

但我无法登录,只返回登录页面。

如果有人可以,请帮助我理解我做错了什么。

2 个答案:

答案 0 :(得分:29)

错误: - (在 www- form 中间有额外的空间)

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

正确

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

答案 1 :(得分:0)

由于一些原因,您可能会得到400,但通常是因为数据格式不正确(也许需要XML吗?)。也许记录已经存在。使用邮递员尝试一下,看看会得到什么结果。