vb.net php消耗asmx如何验证

时间:2019-03-19 04:30:57

标签: php vb.net soap asmx

我提供的PHP和ASMX项目版本与我正在处理的项目完全一样。

摘要

php.ini配置为使肥皂扩展名处于活动状态。示例ASMX Web服务只有一个功能和一个参数。该Web服务可以在Visual Studio中正常运行,也可以在我的网站上运行。

PHP需要使用单个参数调用 WebService 页面函数,并返回结果。

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年相比,单独的有效解决方案
  •   
  • 在vs 2012 PHP项目中,我的网站上有ASMX
  •   
  • 使用带有数组名称/值对的“ Hello”函数parm使用?wsdl /?WSDL和PHP
  •   
  • 不使用?wsdl和PHP使用“ __soapcall”
  •   
  • PHP指向VS中的ASMX,本地IIS和我的网站
  •   
  • PHP标准肥皂和NUSOAP方法
  •   
  • 混合/匹配以上所有项目
  •   

任何与我的代码有关的指针/建议或不同的测试策略,将不胜感激!

0 个答案:

没有答案