Witam. Mam taki problem ponieważ piszę narzedzie automatyzujace do jednej z stron internetowych nie mogę obejść jednego problemu.
1- Program się loguje ponieważ z sesji na firefoxie mnie wywala.
2- Funkcja z przejmowanie ciasteczek sie także wywołuje ponieważ sprawdziłem MessageBoxem
3- W Kodzie strony po zalogowaniu ktory jest pobieramy nie wiem dlaczego ale jest tak jak by już nie zalogowany.
4- Co idzie z punktami wyżej nie moge wysyłać danych postem.
Prosze o wskazówke pomysły co kolwiek. Na innym forum nikt nie potrafił mi pomóc. Mam nadzieje że tutaj.
Tutaj jest Plik form1
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections.Specialized;
namespace MeneleNet
{
public partial class Form1 : Form
{
HttpHandler m_HttpHandler = new HttpHandler();
string KodStrony = "";
public Form1()
{
InitializeComponent();
initEvents();
Log("Właczyłem Program");
m_HttpHandler.Headers.Add("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0");
}
private void initEvents()
{
m_HttpHandler.UploadValuesCompleted += new System.Net.UploadValuesCompletedEventHandler(client_UploadValuesCompleted);
m_HttpHandler.DownloadStringCompleted += new System.Net.DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
}
public void Log(string Text)
{
LogBox.Text += Text + "\r\n";
}
private void MetodaGet(String Link)
{
try
{
Uri l_Uri = new Uri(Link);
String l_Response = m_HttpHandler.DownloadString(l_Uri);
KodStrony = l_Response;
}
catch (Exception e)
{
Log(e.Message);
}
}
private void MetodaPost(NameValueCollection l_Content, String Link)
{
try
{
String l_Url = Link;
Uri l_Uri = new Uri(l_Url);
byte[] l_Response = m_HttpHandler.UploadValues(l_Uri, l_Content);
KodStrony = Encoding.Default.GetString(l_Response);
}
catch (Exception e)
{
Log(e.Message);
}
}
void client_DownloadStringCompleted(object sender, System.Net.DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
String l_Response = e.Result;
KodStrony = l_Response;
}
else
{
Log(e.Error.Message);
}
}
void client_UploadValuesCompleted(object sender, System.Net.UploadValuesCompletedEventArgs e)
{
if (e.Error == null)
{
String l_Response = Encoding.Default.GetString(e.Result);
KodStrony = l_Response;
}
else
{
Log(e.Error.Message);
}
}
private void Zaloguj()
{
NameValueCollection Logowanie = new NameValueCollection();
Logowanie.Add("username", "Lukines");
Logowanie.Add("password", "e0bfb3");
MetodaPost(Logowanie, "http://www.menele.net/login.php");
Log("Loguje");
}
private void Szper()
{
NameValueCollection Szper = new NameValueCollection();
Szper.Add("szper","1");
MetodaPost(Szper, "http://www.menele.net/index2.php?l=zlom");
KodBox.Text = KodStrony;
Log("Szperam");
}
private void StartBtn_Click(object sender, EventArgs e)
{
MetodaGet("http://www.menele.net/");
Zaloguj();
Szper();
}
}
}
A tutaj klasa do przechwytywania cookies.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Collections.Specialized;
using System.Windows.Forms;
namespace MeneleNet
{
class HttpHandler : WebClient // To jest stworzenie klasy HttpHandler, dzieki której możemy pracować na http. Dziedziczy ona z klasy WebClient
{
private CookieContainer m_container = new CookieContainer(); //Tworzenie obiektu który będzie przechochowywał cookiesy
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = m_container;
}
return request;
}
public void clearCookies()
{
m_container = new CookieContainer();
}
}
}