Dans l'article précédent, je vous ai présenté une explication détaillée du tutoriel WebService (I)
Raisons d'utiliser des outils:
1. Utilisez des outils pour mieux comprendre le processus de demande de service Web
2. Utilisez l'outil WSEXPLORE pour obtenir le format de la transmission et de la réception des données SOAP.
3. Utilisez l'outil TCP / IP Monitor pour surveiller les données spécifiques de l'en-tête de demande d'interception et de l'en-tête de réponse
Qu'est-ce que le savon?
Le savon est un protocole de texte basé sur des spécifications de codage XML. Autrement dit, SOAP consiste à transmettre des données XML sur HTTP pour réaliser des appels distants [quelle que soit la langue dans laquelle votre serveur est écrit, tant que vous recevez des données XML du protocole SOAP et des données XML de retour du protocole SOAP, elles peuvent être appelées par n'importe quelle langue]
Utilisation de l'instance WSExplorer: Vérifiez que QQ est en ligne
Lorsque vous utilisez la vérification QQCheckonline dans QQonLineWebServicesOap, le retourné est
qqcheckonlineResponse
QQCheckonLineResult (String): n
Cliquez sur Source pour voir les informations détaillées, les informations sont les suivantes:
1: Ceci est le format de message:
La copie de code est la suivante:
http://schemas.xmlsoap.org/soap/envelope/ "xmlns: q0 =" http://webxml.com.cn/ "xmlns: xsd =" http://www.w3.org/2001/xmlschema " xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance">
-
-
870931520
2: Ce qui suit est le format XML reçu
La copie de code est la suivante:
http://schemas.xmlsoap.org/soap/envelope/ "xmlns: xsd =" http://www.w3.org/2001/xmlschema "xmlns: xsi =" http://www.w3.org/2001/xmlschema in-stance ">
-
- http://webxml.com.cn/ ">
N
Lorsque vous utilisez qqonlinewebservicehttpget ou qqonlinewebservicehttppost, ceux retournés sont tous
Nhttp: //webxml.com.cn/ "> n>
Utilisation du moniteur TCP / IP
Le moniteur TCP / IP peut non seulement voir les données SOAP, mais également obtenir des informations d'en-tête pour les demandes et réceptions HTTP.
1. Emplacement: Cet outil est situé à: Fenêtre> Afficher la vue> Autre> MyEclipse Common (outils communs)> TCP / IP Monitor
2. Cet outil équivaut à un agent. Après le démarrage, il écoutera un port local, puis transmettra la demande à l'IP et au port cible spécifié.
Après avoir obtenu les données, renvoyez les données au client intactes. Aux yeux des clients, cet agent doit toujours être le premier à accéder, sinon nous ne verrons pas le processus de transmission des données.
3. Options de configuration:
Sur l'interface du moniteur TCP / IP ouvert: Affichage du menu (petite flèche dans la direction supérieure droite)> Propriétés> Ajouter (ajouter à droite)
Définir sur les propriétés suivantes:
premier pas:
1) Port de surveillance local (écoutez le numéro de port local): 9876, définissez un numéro de port 4 bits à volonté et sera accessible sous la forme de http://127.0.0.1:9876
2) Nom d'hôte (le serveur à écouter, tel que www.vevb.com): 127.0.0.1 parce que la machine publie un service Web, il surveille l'IP natif. Il peut également s'agir de n'importe quel hôte.
3) Port (port du serveur Target à écouter): 6666 - Parce que le service Web que nous avons publié est http://127.0.0.1:6666/Helloworld, 6666 est le numéro de port qui doit être écouté.
4) Type (le type d'écoute):
- TCP / IP: L'adresse d'origine sera utilisée pour continuer à accéder à la demande suivante, telles que la saisie de l'utilisateur: http://127.0.0.1:9876/Helloworld?wsdl reviendra à l'adresse d'accès du service WSDL comme précédemment.
- HTTP: L'adresse de destination continuera d'accéder à la prochaine demande. En tant qu'entrée utilisateur: http://127.0.0.1:9876/Helloworld?wsdl utilisera http://127.0.0.1:6666/heloworld pour accéder à la méthode SayHi lors de la demande de la méthode. Cette méthode ne sera plus proxyée. Car ce n'est plus le numéro de port écouté.
Au type d'écoute, j'ai sélectionné TCP / IP, puis j'ai vérifié la modification de l'adresse dans le fichier WSDL renvoyé en entrant: http://127.0.0.1:9876/Helloworld?wsdl dans la barre d'adresse.
Time Out: Réglez le temps de connexion lorsque l'accès est infructueux, et conservez-le à 0, c'est-à-dire qu'il n'est pas défini.
Après le définir, cliquez sur le bouton OK, puis cliquez sur le bouton Démarrer à droite et la surveillance a commencé.
Étape 2:
Configurez l'URL WSDL sur le MyEclipse WebService vers: http://127.0.0.1:9876/Helloworld?wsdl, notez que le port de MyEclipse TCP / IP Monitor est utilisé. Au lieu de visiter directement le http://127.0.0.1:6666/Helloworld?wsdl publié
Comment modifier le contenu du fichier WSDL?
Utilisez les annotations de Websice.
1. @ Service de définition de WebService
2. @ Méthode WebMethod-définition
3. @ Valeur de retour de la définition de la définition Websult
4. @ paramètres de la définition WebParam
Remarque: différentes versions prennent en charge différents niveaux de commentaires:
1. 1.5 n'est pas pris en charge.
2. Les versions avant 1.6.0_20 doivent utiliser des annotations complètes.
3. Après 1.6.0_21, vous ne pouvez utiliser @WebService que pour annoter la classe.
La fonction des commentaires:
Grâce aux commentaires de WebService, vous pouvez décrire le service Web plus vivement. Cela génère un document WSDL.
Lorsque l'annotation du service Web est modifiée, le code généré par le client affectera également.
La méthode et les noms de paramètres de l'appel ont également changé.
Exemple:
@WebService (name = "myname", // correspondant portype name = "myname" portname = "myport", // port correspondant name = "myport" ServiceName = "MyService", // Service correspondant Name = "MyService" TargetNamespace = Htttp://leaf.com/mynameSpace ") // CHARD PUBLAC SimpledateFormat sdf = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); @WebMethod (action = "myAction", // définir un soapaction = "myAction" pour trouver cette méthode pour exécuter operationname = "myoperationname") // définir la méthode qui peut être appelée, et une méthode spécifique de la classe correspondante sera générée, l'opération name = ".." public @webresult (name = "MysayhelloloreL "Bonjour le monde"; } @WebMethod (action = "mysayhiaCation", operationname = "mysayhioperationname") public @webresult (name = "mysayhiresult") Sayshi (@webparam (name = "myParaname", // a mis les paramètres dans le mode en tête pour protéger les paramètres. "Bonjour:" + name + ", l'heure actuelle est:" + sdf.format (new Date ()); retour STR; } public static void main (String [] args) {endpoint.publish ("http://127.0.0.1:666/heloworld", new Helloworld ()); }}3: Après la publication du programme ci-dessus
Vous trouverez un message rapide différent de celle avant, mais en fait, la même méthode est toujours appelée.
4: Utilisez à nouveau WSIMPORT S. http://127.0.0.1:6666/Helloworld?wsdl pour générer du code Java, puis appeler ce qui suit est le code d'appel (il peut être décrit comme méconnaissable, mais le même travail est effectué.)
package com.leaf.myNamespace; classe publique Main {public static void main (String [] args) {// En analysant WSDL, nous pouvons voir que l'appel GetMyport de MyService renvoie MyName MyName MyName = new MyService (). GetMyPort (); // Appelez la méthode Sayhi via MySayHiOperationName de MyName String str = myname.mysayHiOperationName ("Wang Jian"); System.err.println (STR); }}Explication détaillée du didacticiel WebService (II) Permettez-moi de vous le présenter ici d'abord, j'espère que cela vous sera utile!