Я предоставляю версию проектов PHP и ASMX, которая отвечает точно так же, как проект, над которым я работаю.
Сводка
php.ini
настроен для расширения мылаактивный.Пример веб-службы ASMX имеет только одну функцию и один параметр.Этот веб-сервис работает нормально в Visual Studio, а также на моем веб-сайте.
PHP необходимо вызвать функцию страницы WebService с единственным параметром и вернуть результат.
Веб-сервис.HelloWorld.asmx
<%@ WebService Language="VB" codebehind="HelloWorld.asmx.vb" Class="HelloWorld.HelloWorldService" %>
WebService VB: HelloWorld.asmx.vb
Option Explicit On
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Xml
'
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="HelloWorld")> _
<System.Web.Services.WebServiceBinding(
ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class HelloWorldService
Inherits System.Web.Services.WebService
Sub New()
End Sub
<WebMethod()> _
Public Function Hello(ByVal MyName As String) As String
Return "Hello " & MyName
End Function
End Class
PHP: HelloWorld.php
Обратите внимание, что WebService адрес ниже соответствует порту, используемому для проекта vs ASMX, но я пробовал много разных итераций.
Скрипт
<?php
$websvc = "http://localhost:2430/HelloWorld.asmx?wsdl";
$helloparm = "michael";
$params = array('MyName'=>$helloparm);
print_r($params);
$soap_url = $websvc;
$soap_params = array(
'trace' => true,
'exceptions' => true,
'cache_wsdl' => false
);
try {
$client = new SoapClient($soap_url, $soap_params);
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
}
catch (Exception $e) {
die($e);
}
try{
$result = $client->Hello($params);
}
catch (\Exception $e){
throw new \Exception("Soap Request Failed! Response:\n".$client->__getLastResponse());
}
if ($result) {
echo '$result->HelloResult ='. $result->HelloResult;
}
?>
Вывод PHP:
Array ( [MyName] => michael )
H:\Visual Studio 2012\Projects\HelloWorldPHP\HelloWorld.php:18:
array (size=2)
0 => string 'HelloResponse Hello(Hello $parameters)' (length=38)
1 => string 'HelloResponse Hello(Hello $parameters)' (length=38)
H:\Visual Studio 2012\Projects\HelloWorldPHP\HelloWorld.php:19:
array (size=2)
0 => string 'struct Hello {
string MyName;
}' (length=32)
1 => string 'struct HelloResponse {
string HelloResult;
}' (length=45)
$result->HelloResult =
Попытки
- В течение 2012 года оба проекта были в одном решении
- В течение 2012 года отдельные активные решения
- В проекте PHP против 2012, ASMXна моем веб-сайте
- Использование? wsdl /? WSDL и PHP с использованием функции "Hello" parm с парой имя / значение массива
- Не использование? wsdl и PHP с использованием "__soapcall"
- PHP, указывающий на ASMX в VS, локальном IIS и на мой веб-сайт
- Стандартное мыло PHP и метод NUSOAP
- сочетание / сопоставление комбинаций всех вышеперечисленных элементов
Будем весьма благодарны за любые указания / предложения с моим кодом или, возможно, другую стратегию тестирования!