سؤال

هذا هو يقود لي المكسرات و أنا لا يمكن معرفة أين أنا بإسقاط الكرة.لقد تابعت بعض الأمثلة وجدت عبر googlemonsta دون جدوى.أي مؤشر إلى حيث أخطأت كثيرا apperciated.

        var writer = new StringWriter();
        param = "location=" + Server.UrlEncode(param);
        byte[] paramStream = Encoding.ASCII.GetBytes(param + "&param2=value");
        var URL = "http://www.somesite.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2";
        request.ContentLength = paramStream.Length;
        using( var stream = request.GetRequestStream())
        {
            stream.Write(paramStream, 0, paramStream.Length);
        }

        var response = request.GetResponse();

        string result;
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            result = sr.ReadToEnd();
        }

وذلك بفضل!

تحرير: بقدر ما أستطيع أن أقول لها ضرب موقع (أنا الحصول على html مرة أخرى) ولكن params لا يدفع أكثر.أنا أساسا على قيم يبدو فقد كانت ناجحة.لقد حاولت إزالة أول & ولكن لم تحصل في أي مكان.

تحرير: تحرير التعليمات البرمجية لتعكس التغييرات.

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

المحلول

ربما التخلص من & من بداية أول المعلمة ؟ غير أنه في الأساس تبدو بخير.(راجع أسماء المعلمات في الوقت الحقيقي الخاص بك رمز - حيث كنت قد حصلت على "paramater" في العينة يجب يكاد يكون من المؤكد أن "المعلمة" - ولكن نحن لا نعرف ما رمز حقيقي يبدو أو ما الموقع الحقيقي تتوقع.)

يرجى تقديم مزيد من المعلومات حول ما يحدث في الواقع.ونحن نعلم أنه لا يعمل ، ولكن هناك الكثير من مختلف ممكن وسائط الفشل :)

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

مجرد نقطة العامة الممارسة, يجب التخلص من WebResponse, وأنت لا تحتاج إلى استدعاء Close إذا كنت قد حصلت بالفعل using بيان استجابة تيار:

string result;
using (WebResponse response = request.GetResponse())
{
    using (var sr = new StreamReader(response.GetResponseStream()))
    {
        result = sr.ReadToEnd();
    }
}

نصائح أخرى

هل أنت متأكد أن لديك كل القيم الضرورية للحصول على وظيفة ؟ كان لي مرة واحدة في حال كان هناك إخفاء حقل الإدخال في النموذج الذي تم شيء من هذا القبيل:

<input name="action" type="hidden" id="action" value="login">

واضطررت إلى إمدادات أن المعلمة النحو التالي:

&action=login

تأكد من أنك لا تفقد أي شيء من شكل ما أقوله...

تحرير: أكثر شيء واحد:نظرت فقط في قانون بلدي مرة أخرى حيث كنت قد فعلت هذا ، لاحظت أنا أيضا كان هذا الخط في هناك:

request.ContentLength = bytes.Length;

ليس متأكدا مما إذا كنت تحتاج ذلك, لكن لاحظت أنك لم تحدد طول.

فإنه ليس شيء بسيط مثل إرجاع/جديد-خط بعد المعلمات ؟ تبحث في بعض المستندات على HTTP على شبكة الإنترنت, على ما يبدو أنك تحتاج إلى سطر فارغ بعد ذلك.

(أود أن أقترح telneting إلى ملقم ويب يدويا واللصق الطلب الخاص بك.)

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