2009-08-20 4 views
3

J'aimerais que le serveur appelle une URL (une page ashx) par programme et stocke la réponse sous forme de chaîne. L'utilisation de HttpWebRequest ne semble pas fonctionner correctement car je ne souhaite pas rediriger le client.Comment est-ce que je demande par programme une URL dans ASP.NET?

Merci.

+4

Utilisez un téléphone. Que voulez-vous dire? –

+5

Pourquoi ne pas utiliser HttpWebRequest? –

+0

Il plaisantait probablement à propos de la partie téléphonique, mais appeler une URL n'a aucun sens. – Amok

Répondre

13

Si vous souhaitez appeler une autre page et obtenir la réponse sous forme de chaîne, vous pouvez utiliser la classe WebClient.

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

exactement ce que je cherchais, merci. Je ne pensais pas être terriblement obscur ... – Jason

+0

quelqu'un pourrait-il expliquer comment j'aurais pu mieux poser cette question? – Jason

+0

@Jason - Personne ne savait ce que vous entendiez par 'call' et pourquoi vous ne pouviez pas utiliser HttpWebRequest, votre question n'était donc pas claire. –

1

A l'intérieur du ashx vous devez utiliser Response.Redirect:

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

ou:

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

A votre page, vous pouvez faire:

  • Response.Redirect
  • Server.Trasfer
  • Ajouter un attribut PostBackUrl à votre bouton
  • Utilisez un simple lien
+0

n'est-ce pas que d'écrire ce texte sur la page? Je dois aller sur le site ... – Jason

+0

Vous avez raison, la bonne méthode est la redirection.J'ai déjà édité la réponse – Raphael

2

D'abord, vous devez définir ce que vous entendez par « appel »:

  • Si le navigateur de l'utilisateur de naviguer à un particulier URL? use Response.Redirect()

  • La sortie de votre page ASP.Net doit-elle inclure le contenu d'une autre URL? Utiliser un iframe

  • Voulez-vous que votre code récupère le contenu d'une autre URL et le traite? Utilisez WebRequest.Create(), mais sachez que la requête est issue par l'utilisateur IIS par défaut.

Je pensais que HttpWebRequest était la manière "facile", cependant. Quel est le problème?

1

Il n'y a aucun moyen de recevoir une réponse sans envoyer une requête. Utilisez HttpWebRequest ou la classe WebClient simplifiée.

0

Vous pouvez utiliser une socket. Buts c'est fou. Vous pouvez utiliser l'objet XMLHttpRequest, vous connaissez MSXML2.XMLHttpRequest, mais c'est à nouveau fou. Que voulez-vous dire par la partie "ne pas envoyer des informations d'octets" ...

Questions connexes