vb.net php потребляет asmx как проверить - PullRequest
0 голосов
/ 19 марта 2019

Я предоставляю версию проектов 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
  • сочетание / сопоставление комбинаций всех вышеперечисленных элементов

Будем весьма благодарны за любые указания / предложения с моим кодом или, возможно, другую стратегию тестирования!

...