Получение значения NULL для reCaptcha - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь настроить Google ReCaptcha для формы входа на моем сайте.Но это не работает для меня.Пожалуйста помоги.Получение значения NULL для ответа reCaptcha.

Я работаю над приложением Spring-MVC Dynamic.

Что-то нужно добавить в XML ????

Форма JSP:

<form action="welcome" method="POST">
                <div class="col" align="center">
                <h1>Login</h1>
                <hr>
                    <div class="g-recaptcha" data-sitekey="[Public key]"></div><br>
                    <button type="submit" class="btn btn-info btn-lg">Login</button>
                    </div>
                </form>

Контроллер:

String username=request.getParameter("username");
        String pwd=request.getParameter("pwd");
        String response = request.getParameter("g-recaptcha");
        System.out.println("reCaptcha Response: "+response);

        String ipAddress = request.getRemoteAddr();
        System.out.println("ReCaptcha: "+response);
boolean verify = VerifyRecaptcha.verify(response,ipAddress);
        if(verify)
        {
            System.out.println("Captcha Successful");
        }
        else
        {
            System.out.println("Captcha Unsuccessful");
        }

VerifyRecaptcha.java

public class VerifyRecaptcha {

    public static final String url = "https://www.google.com/recaptcha/api/siteverify";
    public static final String secret = "[secret key]";


    public static boolean verify(String gRecaptchaResponse,String ipAddress) 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", ipAddress);

            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();
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + postParams);
            System.out.println("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();

            // print result
            System.out.println(response.toString());

            //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)
        {
            e.printStackTrace();
            return false;
        }
    }
}

Вывод на консоль (печатные операторы):

reCaptcha Ответ: null

ReCaptcha: null

Captcha Неудачный

...