【发布时间】:2011-08-03 13:44:26
【问题描述】:
我想从 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());
但我无法登录,它只返回登录页面。
如果有人可以,请帮助我理解我做错了什么。
【问题讨论】:
-
我想您的登录页面上有一个表单。如果您将数据发送到带有表单的页面,则不会发生任何事情。您必须将数据发送到您将表单数据发布到的页面。
-
警告:内容长度应包含以字节为单位的大小。根据“查询”的内容,query.length() 和 query.getBytes().length 可能相同也可能不同。应该使用后者。
标签: java http-post httpurlconnection