Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中发送Https Post请求_Java_Http Post_Httpurlconnection - Fatal编程技术网

如何在java中发送Https Post请求

如何在java中发送Https Post请求,java,http-post,httpurlconnection,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(httpsUR

我想从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()); 
但我不能登录,它只返回登录页面

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

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

正确的

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

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

我想你的登录页面上有一个表单。如果将数据发送到带有表单的页面,则不会发生任何事情。您必须将数据发送到将表单数据发布到的页面。警告:内容长度应包含以字节为单位的大小。根据“查询”的内容,query.length()和query.getBytes()的长度可能相同,也可能不同。应该使用后者。两者似乎相同有什么区别?@sunleo我需要发送一个JSON数据作为HTTPS请求的POST数据。我尝试将JSON转换为字符串并将其写入outputStream,但请求抛出400状态错误。有人知道错误是什么吗?也许您不应该发送application/x-www-form-urlencoded,而应该发送application/json作为内容类型。
 con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");