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;
  1. #1 von Bla bla am 6. Februar 2011 - 17:28

    Was für ein dummes Gesülze. Ein weiser Mann sagte mal: wenn man keine Ahnung hat, einfach mal Fresse halten!

  2. #2 von nico am 6. Februar 2011 - 18:30

    Sprich dich aus, erklär mir, was ich deiner Meinung nach falsch gemacht habe. Bin offen, etwas zu lernen.

(wird nicht veröffentlicht)