Как я могу предотвратить SSLException при использовании Google recaptcha v2 - PullRequest
0 голосов
/ 10 октября 2018

Я внедряю систему входа в существующую систему Java (Struts Framework) с использованием Google Recaptcha v2.когда я выполняю это в localhost, я получаю SSLException.После того, как DataOutputStream wr = new DataOutputStream(con.getOutputStream()); строка перехватила исключение SSLE.

, когда это произошло, я взял сертификат и попытался снова.Но то же самое случилось снова.Теперь я пытаюсь добиться успеха по-разному, и я не смог этого сделать.

Я упомянул мой код ниже.пожалуйста, помогите мне решить это.Теперь у меня нет возможности сделать это.Я ожидаю вашей помощи.Извините за мой английский

LoginAction.java

public boolean doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.warn("calling else doPost-$$$$$- >");
    String gRecaptchaResponse = request.getParameter("g-recaptcha-response");
    logger.warn(gRecaptchaResponse);
    boolean verify = VerifyRecaptcha.verify(gRecaptchaResponse);
    logger.warn("verify---------->"+verify);
    try{
        if (verify) {
            return verify;
        } else {
            if (verify) {
                logger.debug("<font color=red>Either user name or password is wrong.</font>");
            } else {
                logger.debug("<font color=red>You missed the Captcha.</font>");
            }
            return verify;
        }
    }catch(Exception e){
        logger.fatal("Exception in doPost");
    }
    logger.warn("verify--222-------->"+verify);
    return verify;
}

VerifyRecaptcha.java

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL; 

import javax.json.Json; 
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.net.ssl.HttpsURLConnection;
import org.apache.log4j.Logger;

public class VerifyRecaptcha {
public static final String url = "https://www.google.com/recaptcha/api/siteverify";
public static final String secret = "secret_key";
    private final static String USER_AGENT = "Mozilla/5.0";
//messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("risk.for.ip.block"));
 static Logger logger = Logger.getLogger(VerifyRecaptcha.class);

public static boolean verify(String gRecaptchaResponse) throws IOException {
    if (gRecaptchaResponse == null || "".equals(gRecaptchaResponse)) {
        return false;
    }
    try{
        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
        // add reuqest header
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
        String postParams = "secret=" + secret + "&response="+ gRecaptchaResponse;
        // Send post request
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(postParams);
        wr.flush();
        wr.close();

        int responseCode = con.getResponseCode();
        logger.debug("\nSending 'POST' request to URL : " + url);
        logger.debug("Post parameters : " + postParams);
        logger.debug("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        //parse JSON response and return 'success' value
        JsonReader jsonReader = Json.createReader(new StringReader(response.toString()));
        JsonObject jsonObject = jsonReader.readObject();
        jsonReader.close();
        return jsonObject.getBoolean("success");

    }catch(Exception e){
        logger.fatal("Error :>",e);
        return false;
    }
}

}

...