[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string SayHello()
{
return "Hello, " + Context.Request.Url.Host;
}
}
Php, Soap, Asmx
Код:
function doWebService()
{
$soapParameters = Array('uri'=>'http://www.somesite/webservices/service.asmx?WSDL','location'=>'http://www.somesite/webservices/', 'trace' => true, 'login' => "admin", 'password' => "111") ;
$client = new SoapClient(null, $soapParameters);
echo $client->SayHello();
}
doWebService();
{
$soapParameters = Array('uri'=>'http://www.somesite/webservices/service.asmx?WSDL','location'=>'http://www.somesite/webservices/', 'trace' => true, 'login' => "admin", 'password' => "111") ;
$client = new SoapClient(null, $soapParameters);
echo $client->SayHello();
}
doWebService();
а вот исключение
Цитата:
[08-Feb-2012 17:39:36] PHP Fatal error: Uncaught SoapFault exception: [HTTP] Method Not Allowed in /home/public_html/testlic.php:7
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://www...', 'http://www...', 1, 0)
#1 [internal function]: SoapClient->__call('SayHello', Array)
#2 /home/public_html/testlic.php(7): SoapClient->SayHello()
#3 /home/public_html/testlic.php(12): doWebService()
#4 {main}
thrown in /home/public_html/testlic.php on line 7
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://www...', 'http://www...', 1, 0)
#1 [internal function]: SoapClient->__call('SayHello', Array)
#2 /home/public_html/testlic.php(7): SoapClient->SayHello()
#3 /home/public_html/testlic.php(12): doWebService()
#4 {main}
thrown in /home/public_html/testlic.php on line 7
Может кто-нить помочь заставить разговаривать друг с другом php и asmx сервис через soap?
Кроме того, очень похоже, что WSDL у сервиса есть, но через первый параметр вызова функции ты его не подгружаешь.
Спасибо за конструктивный ответ, но Method Not Allowed != метод не поддерживается. метод не поддерживается == Method Not Supported.
Цитата:
http.METHOD_NOT_ALLOWED
A request was made of a resource using a request method not supported by that resource. For example, using GET on a form which requires data to be presented via POST, or using PUT on a read-only resource.
A request was made of a resource using a request method not supported by that resource. For example, using GET on a form which requires data to be presented via POST, or using PUT on a read-only resource.
похоже, что не поддерживается.
Открой WSDL сервиса и посмотри, если там вообще вызываемый тобою метод. Код сервиса мне ни чего не говорит. Подозреваю, что это ява. На вскидку то, что указанный метод есть в коде, вовсе не означает, что он доступен по SOAP. Вообще было бы желательно для начала попробовать поработать без логина, хотя судя по ошибке с ним как раз проблем и нет.
Код:
var_dump($client->__getFunctions());
Ну и укажи WSDL первым параметром вызова функции. Потому наверное и NULL, то клиент у тебя не получил список поддерживаемых методов.