Sitter och försöker skriva ett program som låter mig logga in på en hemsida via programmet. Jag hade inga som hels förkunskaper om hur jag skulle gå till väga och jag har nu suttit i några timmar med SDK:n och google för att komma fram till en lösning. Om du menar den artikeln som finns på pellesoft så var den tyvärr inte mkt till hjälp. Den hämtade bara HTML, jag vill skicka data till en html sida för att sedan hämta resultatet (eller nått sånt). Jag ser ett problem på en gång... Du sätter längden på responsen till längden på din sträng, men skickar aldrig strängen... Det ser ut att fungera nu. Jag tog bort StreamWriter ochj använde mig av bara Stream ist, samt att jag stängde stream innan GetResponse(). Tack för hjälpen. Fel av mig, nu vart det ingen timeout men datan skickas fortfarande inte iväg som den ska. Hur ska lösa det?Logga in på en websida
Så här långt har jag kommit:
<code>
private void Login()
{
string strInfo = "nick=test&pass=test";
Console.WriteLine("Not logged in, wait...");
try
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.uppsalafrisbee.se/logintest.asp");
myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)";
myRequest.ContentLength = strInfo.Length;
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
Stream myStream = myRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myStream);
myStreamWriter.Write(strInfo);
myStreamWriter.Flush();
Console.WriteLine(myRequest.Address);
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Console.WriteLine(GetHtml(myResponse.ResponseUri.ToString()));
myResponse.Close();
Console.WriteLine("Logged in!");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
</code>
1. Det har visat sig att programmet stannar om jag har myRequest.Method = "POST"; men skippar jag den raden samt alla stream rader så går programmet igenom, varför?
Edit: Jag har lyckats kommit fram till att det är HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); som gör timeout när jag försöker skicka data. Men frågan "varför" återstår.
2. Vad ska jag göra för att få det att funka?
Lyckas man logga in på http://www.uppsalafrisbee.se/logintest.asp så kommer man till aftonbladet, annars blir sidan vit.Sv: Logga in på en websida
Sv: Logga in på en websida
Sv: Logga in på en websida
<code>
private void Login()
{
string strInfo = "nick=test&pass=test";
byte[] SomeBytes = Encoding.ASCII.GetBytes(strInfo);
Console.WriteLine("Not logged in, wait...");
try
{
HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.uppsalafrisbee.se/logintest.asp");
myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
myRequest.ContentLength = SomeBytes.Length;
myRequest.Method = "POST";
myRequest.Timeout = 10000;
myRequest.ContentType = "application/x-www-form-urlencoded";
Stream myStream = myRequest.GetRequestStream();
myStream.Write(SomeBytes, 0, SomeBytes.Length);
myStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
myResponse.Close();
Console.WriteLine("Logged in!");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
</code>Sv: Logga in på en websida
EDIT: Det är tydligen jag som klantat mig och kollat av fel information, det ser nu återigen ut att fungera.