SORU
30 Mayıs 2009, CUMARTESİ


C programı ile web Sitesi için# Giriş

C kullanarak oldukça yeniyim ben# ve bir web sitesi kaynak kod parçaları okuyan bir uygulama var. Bu çalışır, ama sorun söz konusu sayfa kullanıcı, bu kaynak kodu erişmek için giriş yapmış olmanız gerekmektedir. Benim program başlangıçta kullanıcı oturum açmak için bir yol ihtiyacı ve kaynak kodlarına erişim okumak mümkün olacak, bu yapıldıktan sonra, web sitesi,.

Oturum edilmesi gereken bir web sitesi: mmoinn.com/index.do?PageModule=UsersLogin

Bunun nasıl yapılacağı hakkında tüm gün boyunca aranan ve örnek denedim, ama şansımız yaver gitmedi.

Şimdiden teşekkürler

CEVAP
31 Mayıs 2009, Pazar


Devam edersin kullanarak Professional (Service için POST yerine GET olan HTTP verb sen kullanmakta olan DownloadString), ama bence bulursun daha kolay çalışmak (biraz) alt düzey sınıfları WebRequest ve WebResponse.

İki parça için bu ilk post giriş formu, ikinci kurtarma "Set-cookie" header ve geri göndermek için sunucu olarak "Cookie" ile birlikte Senin OLSUN isteği. Sunucu kullanın bu çerez tanımlamak için şu andan itibaren sana (olduğunu sanıyorum kullanarak çerez tabanlı kimlik doğrulama, ben oldukça emin olarak o sayfayı döndürür bir Set-cookie Başlığı içeren "PHPSESSİD").

< / ^ hr .

Giriş için form gönderme

Mesaj kolaydır formu taklit, aşağıdaki gibi yazılan veri biçimlendirme sadece bir dava

field1=value1&field2=value2

WebRequest ve kod giriş formu Scott Hanselman, POST form verilerini ne kadar burada oynadım kullanarak:

string formUrl = "http://www.mmoinn.com/index.do?PageModule=UsersAction&Action=UsersLogin"; // NOTE: This is the URL the form POSTs to, not the URL of the form (you can find this in the "action" attribute of the HTML's form tag
string formParams = string.Format("email_address={0}&password={1}", "your email", "your password");
string cookieHeader;
WebRequest req = WebRequest.Create(formUrl);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
    os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];

Burada giriş formu için: Set-cookie başlığında görmeniz gereken bir örnek

PHPSESSID=c4812cffcf2c45e0357a5a93c137642e; path=/; domain=.mmoinn.com,wowmine_referer=directenter; path=/; domain=.mmoinn.com,lang=en; path=/;domain=.mmoinn.com,adt_usertype=other,adt_host=-

< / ^ hr .

Giriş formu arkasındaki sayfa alıyorum

Şimdi senin yapman gereken bir sayfaya GET isteği gerçekleştirebilirsiniz.

string pageSource;
string getUrl = "the url of the page behind the login";
WebRequest getRequest = WebRequest.Create(getUrl);
getRequest.Headers.Add("Cookie", cookieHeader);
WebResponse getResponse = getRequest.GetResponse();
using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
{
    pageSource = sr.ReadToEnd();
}

DÜZENLEME:

Eğer ilk YAZI sonuçlarını görüntülemek istiyorsanız, geri dönmüştü HTML kurtarabilirsiniz:

using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
    pageSource = sr.ReadToEnd();
}

Doğrudan cookieHeader = resp.Headers["Set-cookie"]; aşağıda burayı ve diziyi pageSource düzenlenen inceleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • Floortile83

    Floortile83

    16 Ocak 2010
  • Google Developers

    Google Devel

    23 AĞUSTOS 2007