2010-10-20 6 views
1

J'ai fait un service Web simpleutiliser un service de savon php de C#

wsdl:

<wsdl:definitions name='mysum' > 

<wsdl:types> 
<xsd:schema 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:tns="http://www.my-uni-project.info/joomla/components/com_jv_vm_soa/" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="mysum" 
    targetNamespace="http://www.my-uni-project.info/joomla/components/com_jv_vm_soa/" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 

    <xsd:complexType name="mysumRequest"> 
    <xsd:all> 
    <xsd:element minOccurs="0" name="n1" type="xsd:int"/> 
    <xsd:element minOccurs="0" name="n2" type="xsd:int"/> 
    </xsd:all> 
    </xsd:complexType> 

    <xsd:element name="mysumResponse" type="xsd:int"/> 
    </xsd:schema> 
</wsdl:types> 

<wsdl:message name="mysumRequest"> 
    <wsdl:part name="parameters" element="tns:mysumRequest" /> 
</wsdl:message> 
<wsdl:message name="mysumResponse"> 
    <wsdl:part name="result" element="tns:mysumResponse" /> 
</wsdl:message> 


<wsdl:portType name="mysum"> 
    <wsdl:operation name="mysum"> 
    <wsdl:input message="tns:mysumRequest"/> 
    <wsdl:output message="tns:mysumResponse"/> 
    </wsdl:operation> 
</wsdl:portType> 

<wsdl:binding name="mysumSOAP" type="tns:mysum"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="mysum"> 
    <soap:operation soapAction="mysum" /> 
    <wsdl:input> 
    <soap:body use="literal" /> 
    </wsdl:input> 
    <wsdl:output> 
    <soap:body use="literal" /> 
    </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

<wsdl:service name="mysum"> 
    <wsdl:port name="mysumSOAP" binding="tns:mysumSOAP"> 
    <soap:address location="http://www.my-uni- 
    project.info/joomla/components/com_jv_vm_soa/mysum.php" /> 
    </wsdl:port> 
</wsdl:service> 

</wsdl:definitions> 

service:

function mysum($parameters) {

$result = $parameters->item[0]->value + $parameters->item[1]->value; return $result ; }

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $server = new SoapServer("mysum.wsdl"); $server->addFunction("mysum"); $server->handle();

que je peux accéder à partir d'un client php:

$client = new SoapClient("http://www.my-uni- project.info/joomla/components/com_jv_vm_soa/mysum.wsdl"); $params = array('n1' => '4', 'n2' => '8');

try { 
    $result = $client->__soapCall('mysum', array('parameters' => $params)); 

echo $result; } catch (SoapFault $exception) { echo $exception;
}

J'ai essayé de créer un client C# donc d'abord j'ai créé une référence de service « mySum », puis sur la forme, j'ai ajouté un bouton et une étiquette et j'ai ajouté le code suivant pour le bouton

private void button1_Click(object sender, EventArgs e) 
    { 
     mysum s = new mysum(); 
     label1.Text = "" + s.mysum(2, 3);     
    } 

Whe je le lance Je reçois cette erreur:

Error 5 The type or namespace name 'mysum' could not be found (are you 
missing a using directive or an assembly reference?) 

Le service est en ligne

Nous vous remercions à l'avance John

Répondre

0

en général, vous pouvez déterminer si vous c résoudre le problème en utilisant une directive en cliquant avec le bouton droit sur l'objet en question, dans ce cas mysum, et voir si vous pouvez 'Resolve Using ' où est le nom de votre directive.

+0

En y regardant de plus près, j'ai trouvé qu'il y avait un problème avec le wsdl et Visual Studio ne pouvait pas générer la classe de proxy ... Quelqu'un peut-il le repérer? – John

+0

J'ai essayé d'exécuter wsdl.exe dessus, et bien sûr je reçois: "Erreur: Il y a une erreur dans le document XML (1, 2) - 'wsdl' est un espace de noms non déclaré Ligne 1, position 2." –

0

Je pense que votre problème est que vous ajoutez le service en tant que référence de service au lieu de référence de service Web.

Pour ajouter une référence de service Web

  1. référence Ajouter un service
  2. Appuyez sur le bouton Avancé sur la fenêtre
  3. Hit Ajouter une référence Web
  4. Entrez l'URL du service

Aussi,

Assurez-vous d'avoir ajouté la référence à l'espace de noms System.Web.Services dans votre projet.

Espérons que ça aide.

Questions connexes