我提供的PHP和ASMX项目版本与我正在处理的项目完全一样。
php.ini
配置为使肥皂扩展名处于活动状态。示例ASMX Web服务只有一个功能和一个参数。该Web服务可以在Visual Studio中正常运行,也可以在我的网站上运行。
PHP需要使用单个参数调用 WebService 页面函数,并返回结果。
<%@ WebService Language="VB" codebehind="HelloWorld.asmx.vb" Class="HelloWorld.HelloWorldService" %>
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
请注意,下面的 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;
}
?>
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年相比,单独的有效解决方案
- 在vs 2012 PHP项目中,我的网站上有ASMX
- 使用带有数组名称/值对的“ Hello”函数parm使用?wsdl /?WSDL和PHP
- 不使用?wsdl和PHP使用“ __soapcall”
- PHP指向VS中的ASMX,本地IIS和我的网站
- PHP标准肥皂和NUSOAP方法
- 混合/匹配以上所有项目
任何与我的代码有关的指针/建议或不同的测试策略,将不胜感激!