2010-02-18 10 views
1

J'ai une méthode de service Web développée en utilisant .NET 3.5 (VS2008) qui attend quelques chaînes (nom d'utilisateur, mot de passe, sujet, type de fichier) et un document binaire codé en Base64.Requêtes complexes HTTP POST avec .NET

J'ai activé à la fois SOAP et HTTP POST. Alors que SOAP fonctionne parfaitement, il n'est pas possible d'envoyer des requêtes HTTP POST. Les réponses du serveur avec "Serveur n'a pas pu traiter la requête" --- > Les données au niveau de la racine ne sont pas valides Ligne 1, position 1 ".

Les clients utilisent cette méthode pour télécharger leurs documents à partir de leurs applications.

On m'a dit que .NET ne supporte pas les structures complexes utilisant HTTP POST. Tout moyen de soutenir cela?

Répondre

0

Il semble que vous souhaitiez passer d'une application de bureau à une application web ASP.

Bien que ce soit généralement une bonne idée, je pense que vous allez vous battre pour essayer de publier des fichiers via http/form sur votre service web. Bien que techniquement c'est possible, j'ai du mal à penser à une implémentation.

Vous pourriez avoir plus de chance en utilisant un formulaire en tant que proxy avec vos variables d'entrée et une entrée de fichier à soumettre à un formulaire, par exemple. un formulaire Web, et utilisez le codebehind sur le formulaire Web pour faire tourner une instance de votre classe webservice (pas besoin d'utiliser un proxy, vous êtes déjà de votre côté du fil). Si cela n'a pas de sens faites le moi savoir et si cela ne peut pas être fait pour s'adapter à votre scénario s'il vous plaît mettre à jour votre question pour indiquer plus clairement le résultat souhaité.

Si vous le faites via Ajax, décorez votre classe de service avec l'attribut [ScriptService] et publiez JSON via xmlhttp. Vous pouvez facilement envoyer des arguments complexes.

voir http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx pour les instructions.

Si ce n'est pas le cas, veuillez expliquer ce qui est en train de faire et comment vous empaquetez les données.

+0

J'ai mis à jour ma question: les clients accèdent à cette méthode pour télécharger leurs documents sur mon service. – user240113

+0

@ user240113, j'ai mis à jour ma réponse. Je pense que vous devez repenser votre approche planifiée et je suis prêt à vous aider. élaborer sur votre résultat souhaité. –

1

.NET prend en charge les structures complexes utilisant POX (plain old xml) avec httpBinding. Voici un article qui explique comment le configurer: http://fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

Note: Tous SOAP, XML et JSON DTO mises à jour fonctionnent toujours sur HTTP POST - SOAP juste enveloppe votre charge utile avec un balisage supplémentaire, ce qui ajoute effectivement que les frais généraux supplémentaires et complexité pour les clients du site Web (c.-à-d. Ajax).

Si vous souhaitez que votre même service Web fonctionne sur SOAP, ainsi que sur d'autres points de terminaison, par exemple. XML ou JSON vous pouvez être intéressé par ce opensource webservices framework qui active tous ces points de terminaison sans aucune configuration supplémentaire.