سؤال

وأنا أحاول أن يجعل HTTP بسيط مرحلة ما بعد نقطة النهاية مع الحجج رابط فقط.

وعلى الأقل الذي كيف فهم التعليمات التالية:

<اقتباس فقرة>   

وظيفة إلى هذا العنوان مع رابط معلمة واحدة اسمها، عنوان الأعلاف التي تغيرت.

     

وكما هو الحال مع أسلوب XML-RPC، فإنه يتحقق من أن التغذية قد تغيرت، وإذا كان الأمر كذلك فإنه بإعلام المشتركين.

     

ويتم تسجيل الحدث. ورسالة XML اسمه قيمة الإرجاع نتيجة لذلك، مع سمتان والنجاح وجي اس.

وهذا هو قانون بلدي حاليا:

        public static void ping(string feed)
    {
        HttpWebResponse response = MakeRequest(feed);
        XmlDocument document = new XmlDocument();

        document.Load(response.GetResponseStream();
        string success = document.GetElementById("success").InnerText;
        string msg = document.GetElementById("msg").InnerText;

        MessageBox.Show(msg, success);
    }
        private static HttpWebResponse MakeRequest( string postArgument)
    {
        string url = path + "?" + UrlEncode(postArgument);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        return (HttpWebResponse)request.GetResponse();
    }
    private static string UrlEncode( string value)
    {
        string result;
        result= HttpUtility.UrlEncode("url") + "=" + HttpUtility.UrlEncode(value);
        return result;
    }

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

<اقتباس فقرة>   

وغير صالحة في المستوى الأعلى من المستند. خطأ معالجة ملف المورد ': /// C: /Users/ADMIN/AppData/Local/Temp/VSD1.tmp.XML ...

     

وشارع   ^

وأي أفكار؟

وشكرا مقدما

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

المحلول 3

وهنا هو رمز التي وجدتها في العمل.

ونحن نستخدم ما بعد HTTP، المعلمات الترميز في الجسم للتيار. وهذا يعطينا "عنوان URL foobar" كهيئة المحتوى. لا توجد أنواع المحتوى، والتصرفات، والحدود، وغيرها في الجسم.

        private static HttpWebResponse MakeRequest(string path, string postArgument)
    {
        //string url = path + "?" + UrlEncode(postArgument);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);

        request.Method = "POST";
        string boundary = Guid.NewGuid().ToString().Replace("-", "");
        request.ContentType = "multipart/form-data; boundary=" + boundary;
        Stream stream = request.GetRequestStream();
        string result = string.Format("url={0}", postArgument);
        byte[] value = Encoding.UTF8.GetBytes(result);
        stream.Write(value, 0, value.Length);
        stream.Close();

        return (HttpWebResponse)request.GetResponse();
    }
        public static void ping(string server, string feed)
    {
        HttpWebResponse response = MakeRequest(server, feed);
        XmlDocument document = new XmlDocument();
        string result = GetString(response.GetResponseStream());
        try
        {
            document.LoadXml(result);
        }
        catch
        {
            MessageBox.Show("There was an error with the response", "Error");
        }
        //MessageBox.Show(msg, success);

    }
    public static string GetString(Stream thestream)
    {
        int n = thestream.ReadByte();
        byte[] bytes = new byte[n];
        thestream.Read(bytes, 0, n);
        return Encoding.ASCII.GetString(bytes);
    }

ووتدعو إلى GetString هي لأغراض التصحيح فقط وليس هناك حاجة بدقة.

وشكرا لجميع الذين توافقوا هنا لوضع لي على الطريق الصحيح.

نصائح أخرى

وأنا لا أعرف API من .NET ولكن: أنا أفهم التعليمات على النحو التالي: "تنفيذ وظيفة على URL باستخدام الوسائط الاستعلام"، ويجب أن يكون الجسم منصب URL = المعلمة foobar

وIOW: بدلا من اتخاذ postArgument وإلحاق عنوان الموقع، وكنت من المفترض أن استدعاء رابط وتوفير رابط المشفرة بشكل صحيح = foobar في نص الرسالة

.

وبالإضافة إلى ذلك: أنا لا أراك وضع الطلب 'قبول' رأس، والتي قد تكون مهمة إذا يستخدم الملقم الذي لندرك ما شكل للرد مع

وأفضل طريقة للقيام أشكال بوست في. NET هو استخدام فئة WebClient. وتلك الفئة فعل الشيء الصحيح لإرسال البيانات، إما وظيفة (مع المعلمات في الجسم كيان) أو في شكل GET (مع المعلمات المشفرة كوسائط سلسلة الاستعلام).

وتحتاج لتبين لنا استثناء الفعلي الذي العميل يعطي ظهره، من أجل معرفة ما هو الخطأ ..

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