2010-07-15 3 views
1

Très bien ... J'ai une sorte de grande question ... ok, ça va ... Habituellement, si je comprends bien ... les services web fonctionnent d'une manière que j'écris une méthode pour obtenir des données de la base de données et puis un autre utilisateur/client ajoute une référence et appelle mon service et obtient les données ... maintenant dans mon cas je dois obtenir les données et les poster réellement à l'utilisateur/client en XML (en savon peut-être) je suppose .. ..so voici ce que je fais ...Quelle est la meilleure façon de publier des données dans une URL si quelqu'un n'appelle pas un service Web?

[Serializable] 
public class MyClass 
{ [SoapAttribute] 
    public int id; 
    [SoapIgnore] 
     public int ToSkip; 
} 

String XmlizedString = null; 
      MyClass obj= new MyClass(); 
      MemoryStream memoryStream = new MemoryStream (); 
      XmlTypeMapping myMapping = 
      (new SoapReflectionImporter().ImportTypeMapping 
      (typeof(MyClass))); 
      XmlSerializer xs = new XmlSerializer (myMapping); 
      XmlTextWriter xmlTextWriter = new XmlTextWriter (memoryStream, Encoding.UTF8); 

      xs.Serialize (xmlTextWriter, obj); 
      memoryStream = (MemoryStream) xmlTextWriter.BaseStream; 
      XmlizedString = UTF8ByteArrayToString (memoryStream.ToArray ()); 
      using (System.Net.WebClient client = new System.Net.WebClient())  
      { 
      // performs an HTTP POST 
      status= client.UploadString("http:/somewebservice.com/" + webServiceName,     XmlizedString); 
      } 

donc, en gros .... Je sérialiser au format XML (et du savon) et le convertir en chaîne, puis télécharger cette chaîne à l'URL du service web .. Je veux juste savoir si ce que je fais est juste? ... Je veux fondamentalement obtenir les données le convertissent en savon xml et l'envoient ensuite à l'URL de service Web de l'utilisateur. ase help me out ...

Répondre

1

Est-ce un service web basé sur wsdl? Si oui, utilisez simplement votre IDE ou un outil pour générer un wrapper client de type statique.

Dans l'environnement .NET, vous pouvez utiliser Visual Studio ou wsdl.exe

Ne pas envoyer des données brutes à l'URL et ne pas essayer d'analyser la réponse manuelle, c'est fou. Surtout avec ces webservices SOAP complexes.

+0

est-ce un gros problème si je viens de publier xml droit (en tant que chaîne) à une URL pour fournir les données ... je suis désolé mais quels sont les problèmes ici? – Vishal

+0

il y a fondamentalement deux problèmes avec cela. d'abord vous devrez écrire plus de code = plus de temps que nécessaire et le deuxième problème est la maintenance, si l'interface webservice client change, vous devrez déterminer manuellement ce qui a changé et mettre à jour votre code écrit manuellement plutôt que simplement régénérer le code client un outil. techniquement ce que vous faites n'est pas faux, c'est juste faux du point de vue des affaires. –

Questions connexes