Вызов веб-службы C # с использованием PHP - PullRequest
2 голосов
/ 20 января 2009

Я хотел бы вызвать службу C # с использованием PHP, кто-нибудь знает, как это сделать? Спасибо

Ответы [ 3 ]

3 голосов
/ 20 января 2009

Создайте XML-документ SOAP, соответствующий WSDL, и отправьте его через HTTP POST. См. здесь для примера .

Вы отправляете это:

POST /webservices/tempconvert.asmx HTTP/1.1
Host: www.w3schools.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <CelsiusToFahrenheit xmlns="http://tempuri.org/">
      <Celsius>string</Celsius>
    </CelsiusToFahrenheit>
  </soap12:Body>
</soap12:Envelope>

И получите это обратно:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <CelsiusToFahrenheitResponse xmlns="http://tempuri.org/">
      <CelsiusToFahrenheitResult>string</CelsiusToFahrenheitResult>
    </CelsiusToFahrenheitResponse>
  </soap12:Body>
</soap12:Envelope>
1 голос
/ 20 января 2009

Нет такой вещи, как "C # Web Service". Вы имеете в виду XML-веб-службу, основанную на удаленных вызовах SOAP и WSDL для описания.

Действительно, все службы SOAP должны быть взаимно совместимыми, будь то .Net, PHP или Java. Но на практике мелкие проблемы усложняют ситуацию.

Существует множество различных библиотек SOAP для PHP, но для подключения к веб-службе ASP.NET XML из PHP, но nuSOAP дал наилучшие результаты для меня. В основном это набор PHP-классов для использования веб-сервисов на основе SOAP. Простейший код клиента выглядит так:

<?php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the client instance
$client = new soapclient('http://localhost/phphack/helloworld.php');
// Call the SOAP method
$result = $client->call('hello', array('name' => 'Scott'));
// Display the result
print_r($result);
?>

См. http://www.scottnichol.com/nusoapintro.htm для дополнительных примеров.

0 голосов
/ 20 января 2009

Я никогда не делал этого в PHP-> C #, я использовал C # для вызова веб-сервисов PHP и всегда использовал оболочку Zend Framework для нативных классов PHP. Вы должны проверить Zend_Soap_Client , который, если он похож на Zend_Soap_Server, является просто оберткой с некоторыми дополнительными функциями для классов PHP SOAP .

И, я должен сказать, все, что он делает, это заключает в свои слова то, что сказал @ Джош, и делает некоторые вещи автоматически для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...