| 

.NET C# Java Javascript Exception

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?
23.11.2009
Dustin Klein 2,9k 2 9
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.2009
Scout 1,4k 2 8
Scout 1,4k 2 8
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.2009
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.2009
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.2009
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.2009
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.2009
DaSpors 4,2k 2 8
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.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH