.NET C# Java Javascript Exception

 | 
Frage stellen Fragen Themen Mitglieder Abzeichen RSS-Feed
1
Hallo,

irgendwie ist heute der Wurm drin. Ich werde leider nicht schlau, wieso ich kein return von meinem Perl-Script bekomme, wenn ich es über einen WebRequst ansteuern will. Hier einmal der Code meines WebRequests (Die Zuweisung der ex Attribute an das Array waren nur zu Testzwecken):

#region Webresponse über URL
public static string[] GetUrlResponse(string url, string username, string password)
{
string[] content = new string[11];

// HttpWebRequest webRequest = WebRequest(url) as HttpWebRequest;
WebRequest webRequest = WebRequest.Create(url);

if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
{
NetworkCredential networkCredential = new NetworkCredential(username, password);
webRequest.PreAuthenticate = true;
webRequest.Credentials = networkCredential;
}

try
{
// HttpWebResponse webResponse = webRequest.GetResponse() as HttpWebResponse;
WebResponse webResponse = webRequest.GetResponse();

StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.ASCII);
StringBuilder contentBuilder = new StringBuilder();
while (-1 != sr.Peek())
{
contentBuilder.Append(sr.ReadLine());
contentBuilder.Append("\r\n");
}
content[10] = contentBuilder.ToString();
}
catch (Exception ex)
{
content[0] = ex.ToString();
content[1] = ex.Message;
content[2] = ex.InnerException.ToString();
content[3] = ex.Source.ToString();
content[4] = ex.StackTrace.ToString();
content[5] = ex.TargetSite.ToString();
content[10] = "";
}
return content;
}
#endregion


Diesen WebRequest rufe ich nun folgendermaßen auf:

string url = "http://www.kleins.eu/cgi-bin/tl/webupdate.cgi?param=test";
string[] output = new string[11];
output = tl_webrequest.GetUrlResponse(url, "", "");


Mein Perl-Script macht nun einfach folgendes, es fragt den Parameter "param" ab und gibt den Wert mit einem einfachen print zurück (Kann auch gerne mit der o.g. URL getestet werden). Bei einem anderen Projekt hat der Aufruf damals geklappt, aber hier nicht...

Was mach ich falsch?
2 Antworten
2
Hmm, also bei mir muß ich immer explizit nach HttpWebResponse casten, damit der Debugger kein Fehler anzeigt. Weiß auch nicht was Microsoft sich dabei gedacht hat.

HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
StreamReader sr = new StreamReader(HttpWResp.GetResponseStream(), Encoding.ASCII);


Grüßle
24.11.09
Scout 1,4k 1 7
Scout 1,4k 1 7
Ja, hatte ich auch schon versucht, ist in meinem Beispiel als Kommentar über dem WebRequest, aber auch hierbei kommt beim GetResponse() ein TimeOut. Aber ich teste das gleich nochmal!
Dustin Klein 24.11.09
Perfekt, scheinbar geht es mit dem "as HttpWebRequest" nicht, aber deine Lösung klappt! Zwar komisches Casting, aber so lange es funktionier ;-)
Dustin Klein 24.11.09
Hier ist in Zeile 3 ein Fehler: HttpWReq.GetResponseStream() müsste es heißen, aber dann hatte es geklappt ;-) Nur jetzt habe ich an gleicher Stelle wieder ein Problem.
Dustin Klein 24.11.09
Wenn du uns dein neues Problem mitteilst könnten wir evtl. helfen. Ist dann aber wahrscheinlich in einer neuen Frage besser aufgehoben.
Scout 25.11.09
0
Ich glaube Dein Perl-Script gibt kein NewLine aus. Also JEDE Zeile (auch die letzte) mit "\r\n" (je nach Config auch nur "\n") anbschliessen. Sonst macht sr.ReadLine() Mist.
24.11.09
DaSpors 2,0k 7
So weit komm ich garnicht, er hängt schon in der Zeile WebResponse webResponse = webRequest.GetResponse(); bis zum TimeOut, danach folgt dann eben, dass der Remote Host nicht erreichbar wäre...
Dustin Klein 24.11.09
Deine Antwort
Entweder einloggen... ...oder ohne Wartezeit registrieren
Name
Passwort
Passwort wiederholen
E-Mail
Geworben von


Login mit OpenID

Mit einem OpenID-Account kannst Du dich auf allen Webseiten anmelden, die OpenID unterstützen. Du hast bereits ein Benutzerkonto bei einem der folgenden Provider? Dann kannst Du dich direkt hier damit registrieren.


OpenID-Provider anklicken: