为什么我的POST请求(HTTPS)请求失败?

时间:2013-10-16 22:13:52

标签: java post

我正在尝试为我的学校wifi登录系统制作一个自动登录程序。我需要对身份验证URL(https://ccahack.bergen.org/auth/perfigo_validate.jsp)发出POST请求并提交一些参数。如果我将HTTPS更改为HTTP并执行POST请求,则只需将我重定向回登录论坛。所以我必须POST到HTTPS,但问题是我收到了SSL套接字错误,这是我的代码:

public boolean signIn() throws Exception{
        //System.setProperty("http.agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36");
        String httpsURL = "https://ccahack.bergen.org/auth/perfigo_validate.jsp";
        String username = "username";
        String password = "password";
        StringBuilder q = new StringBuilder();
        q.append("reqFrom="+URLEncoder.encode("perfigo_simple_login.jsp","UTF-8")); 
        q.append("&uri="+ URLEncoder.encode("https://ccahack.bergen.org/","UTF-8"));
        q.append("&cm=" + URLEncoder.encode("ws32vklm", "UTF-8"));
        q.append("&userip="+URLEncoder.encode("IP_ADDRESS HERE","UTF-8"));
        q.append("&os=" +URLEncoder.encode("MAC_OSX","UTF-8"));
        q.append("&index="+URLEncoder.encode("4","UTF-8"));
        q.append("&username="+URLEncoder.encode(username,"UTF-8"));
        q.append("&password="+URLEncoder.encode(password,"UTF-8"));
        q.append("&provider="+URLEncoder.encode("BCA","UTF-8"));
        q.append("&login_submt="+URLEncoder.encode("Continue","UTF8"));
        String query = q.toString();
        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());  
            //error here

        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()); 
        return false;
    }

1 个答案:

答案 0 :(得分:1)

根据您在评论中发布的例外情况,您需要确保该网站的证书位于您的信任库中。 (假设你相信它。)

这是我写回来的事情:

http://springinpractice.com/2012/04/29/fixing-pkix-path-building-issues-when-using-javamail-and-smtp/

在这种情况下,我正在做SMTP(你正在做HTTP),所以你需要对其进行调整。