2010-10-05 9 views
0

Je ne suis pas sûr si je pose la bonne question.Répondre à HTTP POST

Nous avons une application web à laquelle nous essayons d'avoir un POST tiers. Nous créons pour eux une page de destination spéciale à laquelle ils peuvent soumettre les données dont nous avons besoin via POST.

Je ne suis pas sûr comment répondre à leur demande, que je suppose que je traite en tant que HttpRequest entrant. Est-ce que je traite leurs données dans PageLoad ou un autre événement? Où/Comment ces données sont-elles contenues?

Dois-je utiliser HttpListener ou le gestionnaire ProcessRequest, ou quoi? Faire une recherche ici ou sur Google donne beaucoup de résultats sur la façon de POST vers un autre site, mais n'arrive pas à trouver un site pertinent sur la façon d'être ce "autre" site et gérer les données POST entrantes .

Encore une fois, je ne suis pas sûr que je pose cette question.

EDIT: Je trouve le Page.ProcessRequest Method in the MSDN library, mais les remarques dire « Vous ne devriez pas appeler cette méthode »

Merci!

Répondre

0

Le mieux serait d'utiliser un IHttpHandler, mais il est possible de faire ce que vous voulez en utilisant une page ASP.NET standard. En utilisant PageLoad est bien, vous avez accès aux propriétés Request et Response, qui vous donnent tout ce dont vous avez besoin pour traiter une requête HTTP. Par exemple, pour obtenir les paramètres de formulaire, vous pouvez utiliser Request["input1"] pour obtenir la valeur d'entrée de formulaire (soit chaîne de requête, formulaire de formulaire ou cookie) avec le nom "input1".

Que devez-vous faire en réponse à cette demande de publication? Quel genre de données avez-vous besoin de retourner? Jusqu'à ce que cela soit répondu, difficile d'aider plus loin.

+0

Eh bien, notre application permet à nos propres utilisateurs d'entrer des données. Nous aimerions qu'une tierce partie puisse entrer ses propres données sur notre site, plutôt que de saisir des données pour elle. Pourquoi faire ceci? Parce qu'ils collectent un sur-ensemble des données dont nous avons besoin sur leur propre application web. De cette façon, ils nous POST seulement le sous-ensemble des données requises pour notre application web. Ils seront simplement nous transmettre des données automatiquement au lieu de via notre propre entrée de formulaire. La validation et la désinfection seront bien entendu effectuées sur ces données. – Marc

+0

@Marc, comment vos utilisateurs saisissent-ils actuellement des données, sinon via POST? –

+0

@Marc, donc un tiers écrit les pages HTML, mais le 'action' sur l'élément de formulaire pointe vers vos serveurs? –

1

Vous avez vraiment besoin de regarder les bases de ASP.NET. Même si c'était un cas où un IHttpHandler serait le mieux adapté, je suggérerais d'utiliser une page .aspx dans ce cas car c'est le meilleur endroit pour commencer à apprendre, et vous pouvez passer à un IHttpHandler plus tard. Si les données sont postées dans l'application/x-www-form-urlencoded ou multipart/form-data (les deux formats utilisés par les formulaires sur les pages web - s'ils ne vous ont pas dit quel format ils utilisent alors c'est probablement une de ces deux), la propriété Request.Form (en fait, une propriété d'une propriété) agira comme un dictionnaire dans les données envoyées (par exemple si elles ont un champ appelé "foo" alors Request.Form["foo"] retournera la valeur de celle-ci comme une chaîne). Sinon, vous devrez utiliser le Request.InputStream et lire à partir de cela. Ce dernier est un peu plus impliqué cependant.