سؤال

وأنا أفعل التجارة الإلكترونية في الحل ASP.NET والذي يستخدم باي بال المدفوعات موقع القياسية الخدمة.جنبا إلى جنب مع أنني استخدام الخدمة التي تقدمها (الدفع نقل البيانات) أن يرسل لك طلب المعلومات بعد المستخدم الانتهاء من الدفع.الشيء الأخير الذي أريد القيام به هو تحليل وظيفة طلب منها وتستمر المعلومات في ذلك.طلب HTTP محتوى في هذا النموذج :

النجاح
first_name=جين+دو
last_name=سميث
payment_status=تكتمل
payer_email=janedoesmith%40hotmail.com
payment_gross=3.99
mc_currency=دولار أمريكي
مخصصة=ل+ال+شراء+of+the+نادر+كتاب+أخضر+البيض+%26+لحم الخنزير

أساسا أنا أريد أن تحليل هذه المعلومات و القيام بشيء مفيد مثل إرساله عن طريق البريد الإلكتروني أو حفظه في ديسيبل.سؤالي هو: ما هو النهج الصحيح للقيام تحليل الخام HTTP البيانات في ASP.NET وليس كيفية تحليل نفسها به.

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

المحلول

شيئا من هذا القبيل وضعها في onload الحدث.

if (Request.RequestType == "POST")
{
    using (StreamReader sr = new StreamReader(Request.InputStream))
    {
        if (sr.ReadLine() == "SUCCESS")
        {
            /* Do your parsing here */
        }
    }
}

فتذكروا أنهم قد تريد بعض نوع من الاستجابة (أي ؛ لا الكامل الخاص بك صفحة ويب) ، لذلك قد تفعل شيئا من هذا القبيل بعد الانتهاء من تحليل.

Response.Clear();
Response.ContentType = "text/plain";
Response.Write("Thanks!");
Response.End();

تحديث:وينبغي أن يتم ذلك في عام معالج (.ashx) الملف في أجل تجنب قدرا كبيرا من النفقات العامة من الصفحة النموذجية.تحقق من هذه المادة لمزيد من المعلومات حول .ashx الملفات

نصائح أخرى

استخدام IHttpHandler وتجنب صفحة نموذج النفقات العامة (التي لا تحتاج) ، ولكن استخدام الطلب.شكل للحصول على قيم حتى لا تضطر إلى تحليل اسم أزواج قيمة نفسك.فقط تظاهر بأنك في PHP أو ASP الكلاسيكية (أو ASP.NET MVC, هذا الشأن).;)

أود أن أوصي بشدة توفير كل طلب بعض الملفات.

بهذه الطريقة, يمكنك دائما العودة إلى المحتويات الفعلية من ذلك في وقت لاحق.يمكنك أن أشكر لي في وقت لاحق, عندما تجد أن معادية-endian, كوي-8 ترميز, [...], مهما كان أن الحيرة الخاص بك محلل...

حسنا إذا كانت البيانات الواردة في النموذج القياسي المشفرة شكل آخر, ثم باستخدام الطلب.شكل مجموعة سوف أعطيك كل البيانات في لطيفة للتعامل مع الطريقة.

إذا لم يكن ثم لا أستطيع أن أرى أي طريقة أخرى غير استخدام الطلب.InputStream.

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

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