Appel d'un Service Web Java à partir d'un .Un Projet De Réseau
J'espère que vous les gars pouvez m'aider.
Je suis un .Net developer en utilisant le code C#. J'ai été donné la tâche d'appeler un service web écrit en Java par mon collègue. Le premier problème que nous avons est qu'il ne parle pas .Net et je ne parle pas de Java.
La première question est de savoir si à l'aide d'un site web de référence ou d'un service de référence. Les deux semblent fonctionner dans le sens que mon programme trouve le service et ajouter la référence. Mais le Service de Référence n'est pas exposée dans mon projet. Pour cette raison, je suis allé avec le Web de référence, au moins pour l'instant.
Je peut régler les propriétés et de les rappeler et il fonctionne très bien. La question que je me pose est de savoir comment appeler la méthode. Quand je demande à mon collègue, il ne semble pas pour obtenir ce que je parle.
J'ai besoin d'une réponse si c'est quelque chose de tout simplement ou si j'ai besoin de poser une question à mon collègue qu'Java personne va comprendre de quoi je parle.
Voici le code que j'ai écrit:
WebReference.getContactUs myContactUs = new WebReference.getContactUs();
myContactUs.ContactUsReceived = DateTime.Now;
myContactUs.FirstName = "Bob";
myContactUs.LastName = "Avallone";
DateTime _ThisDateTime = myContactUs.ContactUsReceived;
Voici le code à partir du wsdl
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://contactus.nrcme.fmcsa.dot.gov/" xmlns:ns1="http://nrcme.fmcsa.dot.gov/ContactUs/" name="ContactUs" targetNamespace="http://nrcme.fmcsa.dot.gov/ContactUs/" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xs:schema targetNamespace="http://nrcme.fmcsa.dot.gov/ContactUs/" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="getContactUs">
<xs:complexType>
<xs:sequence>
<xs:element name="ContactUsReceived" type="xs:dateTime" />
<xs:element name="FirstName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
<xs:element name="Title" type="xs:string" />
<xs:element name="Organization" type="xs:string" />
<xs:element name="Address1" type="xs:string" />
<xs:element name="Address2" type="xs:string" />
<xs:element name="City" type="xs:string" />
<xs:element name="State" type="xs:string" />
<xs:element name="ZipCode" type="xs:string" />
<xs:element name="Telephone" type="xs:string" />
<xs:element minOccurs="0" name="Fax" type="xs:string" />
<xs:element name="Email" type="xs:string" />
<xs:element name="EmailConfirm" type="xs:string" />
<xs:element minOccurs="0" name="Comment" type="xs:string" />
<xs:element minOccurs="0" name="Question1" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getContactUsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="ContactUsReceived" type="xs:dateTime" />
<xs:element minOccurs="0" name="status" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="ContactUs_getContactUsResponse">
<part name="getContactUsResponse" element="ns1:getContactUsResponse" />
</message>
<message name="ContactUs_getContactUs">
<part name="getContactUs" element="ns1:getContactUs" />
</message>
<portType name="ContactUs">
<operation name="getContactUs" parameterOrder="getContactUs">
<input message="ns1:ContactUs_getContactUs" />
<output message="ns1:ContactUs_getContactUsResponse" />
</operation>
</portType>
<binding name="ContactUsBinding" type="ns1:ContactUs">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="getContactUs">
<soap:operation soapAction="http://nrcme.fmcsa.dot.gov/ContactUs/getContactUs" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
</definitions>
Merci à l'avance, ce forum a été un grand.
- Lorsque vous traitez avec deux différentes plates-formes telles que Java et .Net, vous avez besoin de rendre la communication plus claire possible. Votre question au développeur Java essentiel se résume à comment j'appelle le Service web à l'aide .Net. Ce n'est pas quelque chose que le développeur Java sera en mesure de vous fournir. Le développeur Java peuvent fournir des détails sur le Service Web (XML, d'entrée, de sortie, etc), cependant, les détails de l'bibliothèques à utiliser, etc.. sont à l'extérieur du prestataire de services (Java dev) la portée et les plus susceptibles de leur expertise.
Vous devez vous connecter pour publier un commentaire.
L'un des problèmes que je vois, c'est que le WSDL est de rendre les choses un peu déroutant. Elle définit à la fois les données XML de l'objet nom de l'élément et de l'opération de Service Web comme "getContactUs'. Je voudrais discuter de la modification de l'élément de données XML à partir de 'getContactUs' à quelque chose de semblable à "info contact'. Si cet élément changements, vous verrez probablement que votre confusion est avec cette appellation.
En général, vous avez quelques opérations que vous devez effectuer pour exécuter le service web. La première consiste à récupérer le WebReference proxy exemple pour le service. La deuxième consiste à initialiser tous les paramètres d'entrée nécessaires. Enfin, vous utilisez la classe de proxy pour appeler le service méthode. Je crois que vous avez effectué la deuxième étape, mais vous êtes à côté de la première étape qui vous donne accès à l'invocation de service web. L'invocation de service peut ressembler à quelque chose semblable à la suivante selon vous code:
Il semble que vous l'appel de la méthode de service lorsque vous appelez nouveau WebReference.getContactUs();. Si vous vérifiez les fichiers journaux du serveur web de la machine qui exécute le service java vous pouvez vérifier ceci, Cependant savon "fonctions" sont définis par l'élément wsdl.
Le point le plus important est d'avoir le bon fichier WSDL pour le code que vous devez appeler. Cela semble être dans l'ordre.
Je vous suggère de commencer avec la Tempête (http://storm.codeplex.com/) pour s'assurer que le WSDL est exacte et faire l'essai initial du service web. Puis on m'a dit que Visual Studio, vous pouvez importer un fichier WSDL, et de générer du code client, vous pouvez ensuite il suffit d'invoquer, ce qui, je le ferais la prochaine.
J'ai eu ce problème aussi. Elle est causée par le .NET
DateTime
être de type différent du Java web définis service. Suffit d'utiliser la chaîne pour remplacer leDateTime
avec un confirmé format datetime.