سؤال

أواجه صعوبة في استهلاك اختبار reCaptcha خدمة ويب باستخدام C#/.Net framework 3.5.على الرغم من أنني أعتقد أن المشكلة هي مع استهلاك خدمات الويب بشكل عام.

String validate = String.Format("http://api-verify.recaptcha.net/verify?privatekey={0}&remoteip={1}&challenge={2}&response={3}", PrivateKey, UserIP, Challenge, Response);
WebClient serviceRequest = new WebClient();
serviceRequest.Headers.Add("ContentType","application/x-www-form-urlencoded")

String response = serviceRequest.DownloadString(new Uri(validate ));

كان يقول لي هذا الخطأ:nverify-params-غير صحيحة.وهو ما يعني:

المعلمات إلى /التحقق غير صحيحة ، تأكد من أنك اجتياز جميع المعايير المطلوبة.

لكنه الصحيح.أنا باستخدام المفتاح الخاص, عنوان IP (محليا) هو 127.0.0.1 و التحدي و الاستجابة تبدو على ما يرام.لكن الخطأ يبقى الحدوث.

أنا متأكد من أن هذا هو مشكلة في كيفية انا طالبة خدمة هذا هو أول الوقت كنت قد استخدمت فعلا webservices .صافي.

كما أنني حاولت هذا لأنه يضمن البيانات المنشورة:

    String queryString = String.Format("privatekey={0}&remoteip={1}&challenge={2}&response={3}",PrivateKey, UserIP, Challenge, Response);
    String Validate = "http://api-verify.recaptcha.net/verify" + queryString;

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(Validate));
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = Validate.Length;


    **HttpWebResponse captchaResponse = (HttpWebResponse)request.GetResponse();**
    String response;
    using (StreamReader reader = new StreamReader(captchaResponse.GetResponseStream()))
        response = reader.ReadToEnd();

يبدو أن المماطلة في النقطة التي كنت تحصل على رد.

أي نصيحة ؟

شكرا مقدما

هل كانت مفيدة؟

المحلول 2

وهكذا حصلت على هذا العمل، لسبب ما أنا في حاجة لكتابة طلب إلى دفق مثل ذلك:

//Write data to request stream 
        using (Stream requestSteam = request.GetRequestStream())
            requestSteam.Write(byteData, 0, byteData.Length);

هل يمكن لأحد أن يفسر لماذا يعمل هذا. لم أكن أعتقد أنني سوف تحتاج إلى القيام بذلك، لا أفهم تماما ما يحدث وراء الكواليس ..

نصائح أخرى

لم تكن قد عملت مع اختبار recaptcha الخدمة سابقا ، ولكن لدي اثنين من استكشاف الأخطاء وإصلاحها التوصيات:

  1. استخدام العابث أو الحرائق ومشاهدة ما كنت ترسل للخارج.التحقق من المعلمات الخاصة بك من شأنها أن تساعدك الأساسية استكشاف الأخطاء وإصلاحها ، أيعلى أحرف غير صالحة.... الخ
  2. على اختبار Recaptcha ويكي إدخال حول التعامل مع التنمية على ويندوز فيستا.فإنه لا يجب أن يكون مقصورا على ويندوز فيستا ، على الرغم ؛ إذا كنت يمكن للنظام التعامل مع IPv6 ، ثم المتصفح الخاص بك يمكن أن يكون التواصل في هذا الشكل الافتراضي.ويبدو كما لو كان اختبار Recaptcha يتعامل مع IPv4.وجود عازف الكمان/الحرائق العامل أن أخبرك عن تلك العوامل الأخرى التي يمكن أن تسبب لك الحزن.

هذا قد لا يساعد على حل المشكلة الخاصة بك ولكن قد توفر لك مع أفضل استكشاف الأخطاء وإصلاحها معلومات.

والجواب داميان هو الصحيح بطبيعة الحال، ولكن فقط لتكون واضحة حول أمر من الأمور (كنت مشوشة قليلا) والحصول على نموذج التعليمات البرمجية كاملة ...

var uri = new Uri("http://api-verify.recaptcha.net/verify"); 

var queryString = string.Format(
    "privatekey={0}&remoteip={1}&challenge={2}&response={3}", 
    privateKey, 
    userIP, 
    challenge, 
    response);

var request = (HttpWebRequest)HttpWebRequest.Create(uri);

request.Method = WebRequestMethods.Http.Post;
request.ContentLength = queryString.Length;
request.ContentType = "application/x-www-form-urlencoded";

using (var writer = new StreamWriter(request.GetRequestStream()))
{
    writer.Write(queryString);
}

string result;
using (var webResponse = (HttpWebResponse)request.GetResponse())
{
    var reader = new StreamReader(webResponse.GetResponseStream()); 
    result = reader.ReadToEnd();
}

وهناك فرق طفيف في ذلك أنا أكتب المتغيرات آخر لهذا الطلب، ولكن جوهر ذلك هو نفسه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top