2011-05-25 2 views
0

Voici le Web Service Méthode:Méthode de service Web Impossible de renvoyer un DataTable?

[WebMethod] 
[SoapHeader("m_Token", Direction = SoapHeaderDirection.InOut)] 
public DataTable GetUserProfile() 

est ici la ligne de code que j'utilise pour appeler cette méthode:

DataTable DT = (DataTable) m_ServerApp.GetUserProfile(); 

est ici l'erreur que le compilateur lance:

ne peut pas convertir le type 'WSAClient.ServerApp.GetUserProfileResponseGetUser ProfileResult' à 'System.Data.DataTable'

Quel est le problème? Merci ..

+0

Quelles versions de quelle API? Cela devrait fonctionner avec les WebServices asmx old-school, pas si facilement avec WCF. –

+2

Eh bien, je pense que l'exception est assez explicite - les types ne correspondent pas. Une autre chose est que, à mon avis, il est mauvais de retourner la table de données en tant que résultat de la méthode de service Web, parce qu'il est difficilement compréhensible pour les systèmes non .net, je voudrais pour sa propre structure de données plus spécifique. – Giedrius

+0

Montrez-nous la structure de ProfileResult. – canon

Répondre

-1

Votre méthode proxy client renvoie un objet de type WSAClient.ServerApp.GetUserProfileResponse.GetUserProfileResult. Vous trouverez probablement que ce type contient votre DataTable.

Je suis d'accord que vous ne devriez pas retourner les types qui sont spécifiques à .NET. Un client Java ne comprendra pas ce qu'est un System.Data.DataTable, pas plus qu'un client .NET ne comprendra un Java Map.

+0

@downvoter: quel est le problème avec ma réponse? –

0

Vous enfreignez les normes Soap si votre service Web est utilisé par le client Java, il ne sera pas en mesure de consommer votre service Web. Il vaut mieux retourner un XML qui est encore une norme de savon et du côté client, vous pouvez lire ce fichier xml dans un jeu de données et utiliser le datable

Questions connexes