Archiv für 22. Januar 2011
Das kann doch gar nicht angehen!
Ich bin gerade enorm in der Stimmung eine große Hasstirade abzulassen. Bei dieser sogenannten Programmiersprache, die sich C# nennt, kommt man sich vor, wie in einer großen AB-Maßnahme! Es kann doch nicht angehen, dass es ca. 30 Zeilen Code benötigt, um etwas auszudrücken, dass in Python genau 2 Zeilen braucht.
params = {
'username': 'XXXX',
'password': 'XXXX',
'strAGB': 'AGB',
'strHinweis': 'Zahlungsbedingungen',
'Login': '',
}
params = urllib.urlencode(params)
web_object = urllib.urlopen("https://provider.net/login/index.do", params)
return web_object.getcode
So einfach könnte es sein, Aber Microsoft macht da einen kryptischen Quatsch draus, den man sich in der kompletten Gesamtheit sparen könnte. Nicht nur, dass man von übertrieben vielen Streams geärgert wird, nein, man muss auch noch seine Parameterliste selbst zusammen stellen und die Content Length selbst bestimmen.
Den StatusCode erhält man nur nach einem Cast und drei Funktionsaufrufen. Toll diese Sprache.
foreach (string key in postParameters.Keys)
{
postData += HttpUtility.UrlEncode(key) + "="
+ HttpUtility.UrlEncode(postParameters[key]) + "&";
}
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myHttpWebRequest.Method = "GET";
byte[] data = Encoding.ASCII.GetBytes(postData);
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = data.Length;
Stream requestStream = myHttpWebRequest.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
try
{
HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
wRespStatusCode = myHttpWebResponse.StatusCode;
}
catch (WebException we)
{
wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
}
myStreamReader.Close();
responseStream.Close();
myHttpWebResponse.Close();
return wRespStatusCode;