PDA

View Full Version : چرا این error رو میده و چه جوری میشه رفعش کرد The remote server returned an error: (411) Length Req



bade saba
چهارشنبه 31 شهریور 1389, 12:32 عصر
کدی که نوشتم رو میزارم و خطی که این ارور رو نشون میده رو هم با ستاره مشخص کردم
ممنون میشم اگه راه حلی براش دارید کمکم کنید




HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://www.sample.com/login.php");

webRequest.SendChunked = true;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";

ASCIIEncoding encoding = newASCIIEncoding();
byte[] data = encoding.GetBytes("name=myuser&password=mypassword&s1=Button");

webRequest.ContentLength = data.Length;


webRequest.CookieContainer = newCookieContainer();


Stream newStream = webRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse webResponse;
webResponse = (HttpWebResponse)webRequest.GetResponse();



string html;
using (Stream strmresponse = webResponse.GetResponseStream())
{
using (StreamReader reader = newStreamReader(strmresponse, Encoding.UTF8))
{
html = reader.ReadToEnd();
}
}

bade saba
چهارشنبه 31 شهریور 1389, 12:42 عصر
ببخشید خطا تو خط زیر رخ میده


webResponse = (HttpWebResponse)webRequest.GetResponse();

Hamishebahar
چهارشنبه 31 شهریور 1389, 17:38 عصر
سلام.
خطا از آدرس وارد شده هست.
توی مرورگر هم اجرا کنی همین خطا رو میده.

bade saba
چهارشنبه 31 شهریور 1389, 17:49 عصر
سلام.
خطا از آدرس وارد شده هست.
توی مرورگر هم اجرا کنی همین خطا رو میده.


دوست عزیز اون آدرس وارد شده یه آدرس مثال هست نه حقیقی:چشمک:
شما یه آدرس پیج واقعی با اطلاعات درست وارد کن ایراد رو میبینی:متفکر:

bade saba
چهارشنبه 07 مهر 1389, 20:07 عصر
خوب متاسفانه کسی از دوستان کمکی نکرد اما خدارو شکر خودم جواب رو پیدا کردم ، جواب رو میزارم که اگه دوستی با جستجو به این صفحه رسید بتونه از این مطلب استفاده کنه

برای رفع این ارور باید خط زیر رو از کد بالا حذف کرد


webRequest.SendChunked = true;

اما مشکلی که من داشتم این بود که برنامه با حذف این خط ارور نمی داد اما نمیتونست login کنه این مشکل هم به خاطر این بود که من فقط usrename و pssword و رویداد دکمه رو تو خط زیر برنامه مینوشتم


byte[] data = encoding.GetBytes("name=myuser&password=mypassword&s1=Button");

در صورتی که اگه سرس صفحه login نگاه بکنیم خطوطی مثل خط زیر وجود داره که اطلاعات اونها هم تو stirng بالا باید بیاد تا login انجام بشه


<inputtype="hidden" name="promo" value="">


<inputtype="hidden" name=".intl" value="us">

که اگه بخواییم با توجه به این دو خط string رو بنویسیم به شکل زیر میشه

name=mymane&password=mypassword&s1=button&promo=&.intl=us

****s1 در اینجا اسم دکمه ای که باید کلیک بشه و باید مقداری که در value اون هست براش ارسال بشه


به این شکل login انجام میشه اما اگه بخوایید یه صفحه دیگه بعد login رو در خواست کنید با کد زیر از اکانت بیرون انداخته میشید


webRequest = (HttpWebRequest)WebRequest.Create("http://www.sample.com/nextPage.php" (http://www.sample.com/nextPage.php");webRequest.Method));
webRequest.Method (http://www.sample.com/nextPage.php");webRequest.Method) = "Get";
webResponse = (HttpWebResponse)webRequest.GetResponse();


که این به خاطر عدم ارسال cookie ها هستش که اگه کد رو به شکل زیر بنویسید این مشکل هم حل میشه


strCook = webResponse.Headers["Set-Cookie"];
webRequest = (HttpWebRequest)WebRequest.Create("http://www.sample.com/nextPage.php");
webRequest.Headers.Add("Cookie", strCook);
webRequest.Method = "Get";
webResponse = (HttpWebResponse)webRequest.GetResponse();


امیدوارم این مطالب به دوستان کمک بکنه

debugger
چهارشنبه 07 مهر 1389, 20:39 عصر
میخوای چی بنویسی یا چه کاری انجام بدی ؟؟؟

شاید کد های ساده تری هم وجود داشته باشه؟؟

bade saba
چهارشنبه 07 مهر 1389, 21:13 عصر
این تاپیکی هست که من چند وقت پیش ایجاد کردم و کاری که میخواستم انجام بدم رو تقریبا توضیح داده بودم

http://www.barnamenevis.org/forum/showthread.php?t=242431

debugger
چهارشنبه 07 مهر 1389, 21:24 عصر
بله اگر بخوای وارد ایمیل بشی (مثلا یاهو و ...) و اون کارهایی که گفتی را انجام بدی

میشه با regex اون لینک های مورد نظر را بدست اورد و بعد با وب براوزر navigate کرد و بعد ....

اطلاعات مورد نیاز را بیرون کشید

برای لاگین شدن به سایت یاهو هم می تونی فیلد ها را پرکنی و بعد submit کنی

bade saba
چهارشنبه 07 مهر 1389, 21:30 عصر
میشه توضیخ بیشتری بدید ؟؟؟؟

من قبل این که روش درست استفاده از این کلاس رو بفهمم از webBrowser استفاده میکردم که به مشکلی که تو این (http://www.barnamenevis.org/forum/showthread.php?t=249777)لینک قرار دادم بر خوردم

اگه یه چند خط کد یا چیزی که درک بهتری از موضوعی که میگید رو ایجاد کنه ممنون میشم اینجا قرار بدید

debugger
چهارشنبه 07 مهر 1389, 21:54 عصر
کد های شما برای انجام کار مورد نظرتون خیلی خوبه و پرسرعته و نیازی به وب براوزر نیست

ولی وقتی میخوای وارد یک اکانت بشی دیگه کاربرد نداره و باید حتما از وب براوزر استفاده کنی

شما فکر کن با اینترنت ایکسپلورر لاگین کردی و وارد اکانتت شدی و بعد لینک همون صفحه (وقتی که کامل وارد شدی) را می بری تو فایر فاکس یا یک مرور گر دیگه باز میکنی و یا تو خود اکسپلورر اما در یک اکسپلورر جدید نه در تب
خب طبیعی هست که با صفحه ای رو به رو میشی که وارد اکانت نشده

قضیه کد های شما هم حکایت همین مساله هست

من تو این زمینه ای که کد نوشتی زیاد تجربه ندارم و از روش شما تا حالا استفاده نکردم ولی این برنامه ایی که میگی را در عرض یک روز می تونم کاملا اتوماتیکش را بنویسم

اتصال به اینترنت را چک کنه
به سایت یاهو بره
لاگین کنه
به اینباکس بره
تعداد ایمیل را بشماره
و ....

منم با یه مشکلی رو به رو شدم که خارج از این بحث هست ولی فکر کنم به کمک شما بشه حل کرد

برای دریافت سورس و .. پیغام خصوصی بدین تا من شماره موبایل بدم تا تلفنی حرف بزنیم

moho_bp
سه شنبه 14 دی 1389, 23:27 عصر
با عرض سلام و خسته نباشید.
از اینکه اطلاعاتتون رو در اختیار بینندگان قرار دادید ممنونم. من با کد مشابهی به یک وبسایت پی اچ پی لاگین می کردم اما فقط صفحه خوش آمدگویی رو باز میکرد ولی صفحات بعدی رو اجازه نمی داد. من حدس زدم از ارسال نکردن کوکی باشه. بعد از سرچ کد شما رو دیدم و ازش استفاده کردم. اما با تعجب هنوز هم جواب نمیده. اینبار حدسی ندارم که اشکال از کجاست.
دوست عزیز اگر براتون مقدوره به بنده راهنمایی بدید.
با تشکر.