PDA

View Full Version : HTML post



پروفسور
دوشنبه 12 اردیبهشت 1384, 01:11 صبح
چجوری میشه یه URL رو توی یک WinApp به سرور فرستاد و دادههای برگشتی رو Proccess کرد؟
مهم نحوه فرستادن و دریافت از طریق URL توی WinApp هست.

یاشار
دوشنبه 12 اردیبهشت 1384, 02:23 صبح
با استفاده از WebClient در System.Net.

پروفسور
سه شنبه 13 اردیبهشت 1384, 20:08 عصر
کمکم کنید لطفا.
فقط همین؟

یاشار
سه شنبه 13 اردیبهشت 1384, 21:12 عصر
1- آیا می‌خواین که به سایت اطلاعاتی رو بفرستید و نتیجه‌اش رو ببینید ( http-post ) یا میخواهید source یک صفحه رو بررسی کنید ؟
2- داده‌های برگشتی رو می‌خواهید به صورت باینری بررسی کنید یا متنی ‌؟
3- آیا از قبل مشخص هست که داده‌های برگشتی فایل است یا متن است یا Stream است ؟

برای مثال کد زیر به یک سایت مشخص، یک تقاضا می‌فرسته و source رو داخل یک string ذخیره می‌کنه. بعد میشه با RegEx قسمت‌های دلخواهتون رو ازش جدا کنید. ( با فرض اینکه System.IO و System.Net وارد شده‌اند)


WebRequest Req;
Req = WebRequest.Create("www.yejaayi.com");

WebResponse Response = Req.GetResponse();

Stream St = Response.GetResponseStream();

StreamReader SR = new StreamReader(St);

string Result = SR.ReadToEnd();

Response.Close();
SR.Close();
St.Close();

پروفسور
سه شنبه 13 اردیبهشت 1384, 21:30 عصر
1- آیا می‌خواین که به سایت اطلاعاتی رو بفرستید و نتیجه‌اش رو ببینید ( http-post )
بله


- داده‌های برگشتی رو می‌خواهید به صورت باینری بررسی کنید یا متنی ‌؟
XML و یک سری فایل که باید download بشن و آدرس download توی Response مشخص میشه.


آیا از قبل مشخص هست که داده‌های برگشتی فایل است یا متن است یا Stream است ؟
ممکن است هر سه این موارد باشد
میشه در مورد هر سه توضیح بدید؟

چجوری میشه به Request یک سری header زد و بعد فرستاد؟
مثلا cookie یا Content-Type یا Authorization

یاشار
سه شنبه 13 اردیبهشت 1384, 21:51 عصر
ببخشید، من یه لحظه قاطی کردم تو کدوم بخش هستم، کد VB فرستادم. ( کد تصحیح شد. )

تعیین Header و Content-type و ... از طریق کلاس WebClient انجام می‌شه. خواص Credentials رو برای Authentication استفاده کنید. با RegEx قسمتی که باید اطلاعاتتون رو پست کنید رو توی source صفحه پیدا کنید و مقدار دهی کنید. با خاصیت Headers هم می‌تونید content-type رو مشخص کنید. بعد با استفاده از UploadData اطلاعاتتون رو بفرستید و جواب رو بررسی کنید.

در حال حاضر کد آماده دم دست ندارم براتون بفرستم ولی یه کم با WebClient کلنجار برین، خیلی کارهای جالبی می‌شه باهاش کرد ( Uploadfile , Downloadfile , ... )

پروفسور
سه شنبه 13 اردیبهشت 1384, 21:59 عصر
متشکرم دوست من.

در حال حاضر کد آماده دم دست ندارم
اگر فرصت کردید این کار رو بکنید
برای من emergency هست.

M.GhanaatPisheh
چهارشنبه 14 اردیبهشت 1384, 04:53 صبح
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetwebclientclasstopic.asp

تو MSDN بگردید
راجع به WebClient مطالب کاملی پیدا میکنید که احتمالا نیازتون رو برطرف می کنه.

mdssoft
پنج شنبه 29 فروردین 1387, 02:06 صبح
قبل از هر چیز ببخشید که من این تاپیک رو بالا میارم .
اما مطالبش کاملا مرتبط با سوال من هست .


چجوری میشه یه URL رو توی یک WinApp به سرور فرستاد و دادههای برگشتی رو Proccess کرد؟من هم دقیقا می خوام همین کار رو بکنم ، البته می خوام از طریق App به سایت PersianBlog ، login کنم . اما مشکلی دارم .
اینکه اصلا پاسخ درستی از طرف سرور persianblog نمیگیرم و فقط دوباره صفحه اول سایت بر می گرده . فکر کنم کدم ایراد داره . این هم کد من :


try
{
string uriString = "http://www.persianblog.ir/Default.aspx";
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
string postData = param;

// Apply ASCII Encoding to obtain the string as a byte array.
byte[] postArray = Encoding.ASCII.GetBytes(postData);
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

//UploadData implicitly sets HTTP POST as the request method.
byte[] responseArray = myWebClient.UploadData(uriString, postArray);

// Decode and display the response.
textBox1.Text = Encoding.ASCII.GetString(responseArray);

}
catch (Exception ex)
{
textBox1.Text = ex.Message;
}این هم پروژه با VS 2008
16367

ممنون میشم جوابم رو بدین

mdssoft
شنبه 31 فروردین 1387, 06:53 صبح
یه جوابی می دادین بد نبودا !!!!