Zdravím, skoro celý den řeším problém jak odeslat POST požadavek v C# aplikaci :( Vygooglil jsem vskutku hodně návodů, postupů a všeho, ale bohužel se mi nedaří to zprovoznit :(
Tady je kód:
string url = "http://www.seznam.cz";
HttpWebRequest request = null;
HttpWebResponse response = null;
request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = false;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (System.Net.WebException e)
{
MessageBox.Show(e.ToString());
}
if (response.StatusCode == HttpStatusCode.Found)
{
MessageBox.Show("302");
MessageBox.Show(response.StatusCode.ToString());
}
else
{
// sem bych se měl dostat (a taky dostanu :-) )
MessageBox.Show("Response status is " + response.StatusCode + ". Expected was Found");
}
StreamReader sr = new StreamReader(response.GetResponseStream());
try
{
string html = sr.ReadToEnd();
sr.Close();
}
catch (System.Net.WebException netE)
{
// TODO: Add exception handler
MessageBox.Show(netE.ToString());
}
catch (Exception e)
{
// TODO: Handle exception throw;
MessageBox.Show(e.ToString());
}
string Post = "op=" + sop + "&id=" + sid + "&rand=" + srand + "&method_free=&method_premium=&code=" + text + "&down_direct=1";
byte[] postData = Encoding.ASCII.GetBytes(Post);
try
{
request.KeepAlive = false;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// Tady to hodí vyjímku System.InvalidOperationException:
// Tuto vlastnost nelze nastavit po spuštění zápisu
request.ContentLength = postData.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(postData, 0, postData.Length);
dataStream.Close();
}
catch(InvalidOperationException e)
{
MessageBox.Show(e.ToString());
}
response = (HttpWebResponse)request.GetResponse();
StreamReader responseStream = new StreamReader(response.GetResponseStream());
MessageBox.Show(responseStream.ReadToEnd());
Při pokusu o změnu ContentLength to hodí vyjímku System.InvalidOperationException: Tuto vlastnost nelze nastavit po spuštění zápisu