代码之家  ›  专栏  ›  技术社区  ›  vtortola

reCaptcha和.NET出现问题

  •  0
  • vtortola  · 技术社区  · 16 年前

    我在reCaptcha中遇到了以下错误:

    'Input error: response: Required field must not be blank
    challenge: Required field must not be blank
    privatekey: Required field must not be blank'
    

        public static Boolean Check(String challenge, String response)
        {
            try
            {
                String privatekey = "7LeAbLoSAAAABJBn05uo6sZoFNoFnK2XKyF3dRXL";
                String remoteip = HttpContext.Current.Request.UserHostAddress;
    
                WebRequest req = WebRequest.Create("http://api-verify.recaptcha.net/verify");
                req.Method = "POST";
    
                using (StreamWriter sw = new StreamWriter(req.GetRequestStream()))
                {
                    sw.Write("privatekey={0}&remoteip={1}&challenge={2}&response={3}", privatekey, remoteip, challenge, response);
                    sw.Flush();
                }
    
                String resultString = String.Empty;
                String errorString = String.Empty;
                using (StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream()))
                {
                    resultString = sr.ReadLine();
                    errorString = sr.ReadLine();
                }
    
                Boolean b;
                return Boolean.TryParse(resultString, out b) && b;
            }
            catch (Exception)
            {
                return false;
            }
        }
    

    (当然那不是正确的私钥:P)

    干杯。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Pang Ajmal PraveeN    8 年前

    太好了,我忘了怎么做贴子了

    public static Boolean Check(String challenge, String response)
    {
        try
        {
            String privatekey = "7LeAbLoSAAAABJBn05uo6sZoFNoFnK2XKyF3dRXL";
            String remoteip = HttpContext.Current.Request.UserHostAddress;
    
            WebRequest req = WebRequest.Create("http://api-verify.recaptcha.net/verify");
            req.Method = "POST";
    
            byte[] byteArray = Encoding.UTF8.GetBytes(String.Format("privatekey={0}&remoteip={1}&challenge={2}&response={3}", privatekey, remoteip, challenge, response));
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = byteArray.Length;
    
            req.GetRequestStream().Write(byteArray, 0, byteArray.Length);
    
            String resultString = String.Empty;
            String errorString = String.Empty;
            using (StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream()))
            {
                resultString = sr.ReadLine();
                errorString = sr.ReadLine();
            }
    
            Boolean b;
            return Boolean.TryParse(resultString, out b) && b;
        }
        catch (Exception)
        {
            return false;
        }
    }