2009-08-20 17 views
3

Ich möchte, dass der Server eine URL (eine Aschx-Seite) programmgesteuert aufruft und die Antwort als Zeichenfolge speichert. Die Verwendung von HttpWebRequest scheint nicht richtig zu funktionieren, da ich den Client dort nicht umleiten möchte.Wie programmiere ich programmgesteuert eine URL in ASP.NET?

Danke.

+4

Verwenden Sie ein Telefon. Was meinst du anrufen? –

+5

Warum können Sie HttpWebRequest nicht verwenden? –

+0

Wahrscheinlich machte er Witze über den Telefonteil, aber das Aufrufen einer URL macht keinen Sinn. – Amok

Antwort

13

Wenn Sie eine andere Seite aufrufen und die Antwort als String zurückbekommen möchten, können Sie die Klasse WebClient verwenden.

var myWebClient = new WebClient(); 
string resultStr = myWebClient.DownloadString("http://www.google.com"); 
+0

genau das, was ich suchte, danke. Ich dachte nicht, dass ich zu schrecklich unklar wäre ... – Jason

+0

könnte jemand bitte erklären, wie ich diese Frage besser hätte stellen können? – Jason

+0

@Jason - Niemand wusste, was Sie mit 'call' meinten und warum Sie HttpWebRequest nicht benutzen konnten, daher war Ihre Frage unklar. –

1

Im Inneren des Ashx sollten Sie Response.Redirect verwenden:

System.Web.HttpContext.Current.Response.Redirect("http://www.stackoverflow.com/"); 

oder:

System.Web.HttpContext.Current.Server.Transfer("a path to a page on the same server"); 

Auf Ihrer Seite können Sie ein:

  • Response.Redirect
  • Server.Trasfer
  • hinzufügen PostBackUrl Attribut auf Ihre Schaltfläche
  • Verwenden Sie einen einfachen Hyperlink
+0

schreibt das nicht einfach diesen Text auf die Seite? Ich muss tatsächlich auf die Website gehen ... – Jason

+0

Sie haben Recht, die richtige Methode ist Redirect.Ich habe bereits die Antwort bearbeitet – Raphael

2

Zuerst müssen Sie definieren, was Sie unter „Anruf“ bedeuten:

  • Sollte der Browser zu einer bestimmten Ebene des Benutzers URL? Verwenden Sie Response.Redirect()

  • Sollte die Ausgabe Ihrer ASP.Net-Seite den Inhalt einer anderen URL enthalten? Verwenden Sie einen iframe

  • Möchten Sie, dass der Code den Inhalt einer anderen URL abruft und verarbeitet? Verwenden Sie WebRequest.Create(), beachten Sie jedoch, dass die Anforderung standardmäßig vom IIS-Benutzer ausgegeben wird.

Ich dachte HttpWebRequest war die "easy" Art und Weise, though. Was ist daran so schlimm?

1

Es gibt keine Möglichkeit, eine Antwort zu erhalten, ohne eine Anfrage zu senden. Verwenden Sie HttpWebRequest oder die vereinfachte WebClient-Klasse.

0

Sie möchten vielleicht einen Sockel verwenden. Aber das klingt verrückt. Sie können das XMLHttpRequest-Objekt verwenden, Sie kennen MSXML2.XMLHttpRequest, aber das ist wieder verrückt. Was meinen Sie mit dem Teil "Keine Byte-Informationen senden"?

Verwandte Themen