потреблять php мыло из C # - PullRequest
       1

потреблять php мыло из C #

1 голос
/ 20 октября 2010

Я сделал простой веб-сервис

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>

услуга: </p> <p>function mysum($parameters) {</p> <p>$result = $parameters->item[0]->value + $parameters->item[1]->value; return $result ; }</p> <p>ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $server = new SoapServer("mysum.wsdl"); $server->addFunction("mysum"); $server->handle(); </p> <p>

, к которому я могу получить доступ из php-клиента:

$client = new SoapClient("http://www.my-uni- project.info/joomla/components/com_jv_vm_soa/mysum.wsdl"); $params = array('n1' => '4', 'n2' => '8');</p> <pre><code>try { $result = $client->__soapCall('mysum', array('parameters' => $params));

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

Я попытался создать клиент C #, поэтому сначала я создал ссылку на службу «mysum», затем в форму добавил кнопку и метку и добавил следующий код для кнопки

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

Когда я запускаю его, я получаю эту ошибку:

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

Услуга онлайн

Спасибо заранее John

Ответы [ 2 ]

0 голосов
/ 26 января 2013

Я думаю, что ваша проблема в том, что вы добавляете сервис в качестве ссылки на сервис вместо ссылки на веб-сервис.

Чтобы добавить ссылку на веб-сервис

  1. Добавить сервисную ссылку
  2. Нажмите кнопку Advanced в окне
  3. Hit Добавить веб-ссылку
  4. Введите адрес службы

Кроме того,

Убедитесь, что вы добавили ссылку на пространство имен System.Web.Services в ваш проект.

Надеюсь, это поможет.

0 голосов
/ 20 октября 2010

Как правило, вы можете определить, можете ли вы решить проблему, используя директиву, щелкнув правой кнопкой мыши по рассматриваемому объекту, в данном случае mysum, и узнав, можете ли вы «Разрешить, используя », где - название вашей директивы.

...