mkr3004 Ответов: 1

Как я могу использовать soapclient.js с PHP


мой WSDL-файл находится в файле. / wsdl path:
&ЛТ;определения атрибутов xmlns="http://schemas.xmlsoap.org/wsdl/" атрибутов xmlns:мыло="http://schemas.xmlsoap.org/wsdl/soap/" атрибутов xmlns:ТНС="http://soap.client.chipkarte.at" префиксом xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" описание:ПБВ="http://www.w3.org/ns/ws-policy" префиксом xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" описание УАЗу="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" префиксом xmlns:xsd-файл="http://www.w3.org/2001/XMLSchema" атрибута targetnamespace="http://soap.client.chipkarte.at" наименование="элемент ServiceManager"&ГТ;
< типы>
&ЛТ;хз:описание схемы:хз="http://www.w3.org/2001/XMLSchema" elementFormDefault="квалифицированных" пространства имен targetnamespace="http://soap.client.chipkarte.at" версия="1.0"&ГТ;
< xs:element name= "getServices" type= "tns:getServices" />
< xs:имя элемента= "getServicesResponse" тип= "tns:getServicesResponse" />
< xs:complexType name= "getServices">
< xs: последовательность / >
< / xs:complexType>
< xs:complexType name= "getServicesResponse">
< xs: последовательность>
&ЛТ;хз:элемент имя="возвращение" тип="ТНС:обслуживание" атрибута maxOccurs="unbounded это" значение minOccurs="0" способным="истинной" /&ГТ;
< / xs: последовательность>
< / xs:complexType>
< xs:complexType name= "сервис">
< xs: последовательность>
&ЛТ;хз:элемент имя="наименование" тип="хз:строку" значение minOccurs="0" /&ГТ;
<xs:element name= "endPointURL" type= "xs:string" minOccurs= "0" />
&ЛТ;хз:элемент имя="наименование" тип="хз:строку" значение minOccurs="0" /&ГТ;
&ЛТ;хз:элемент имя="тип"="хз:строку" значение minOccurs="0" /&ГТ;
&ЛТ;хз:элемент имя="вариант" Тип="хз:строку" значение minOccurs="0" /&ГТ;
< / xs: последовательность>
< / xs:complexType>
< / xs: схема>
< / типы>
< имя сообщения= "getServices">
<part name=" parameters "element=" tns:getServices" />
< / сообщение>
< имя сообщения= "getServicesResponse">
<part name=" parameters "element=" tns:getServicesResponse" />
< / сообщение>
<portType name= "IServiceManager">
< имя операции= "getServices">
&амп;ЛТ;вход wsam:действие="http://soap.client.chipkarte.at/IServiceManager/getServicesRequest" сообщение="ТНС:getServices" /&ГТ;
< output wsam:Action="http://soap.client.chipkarte.at/IServiceManager/getServicesResponse" message= "tns:getServicesResponse" />
< / операция>
< / portType>
<binding name= "servicemanager_1Binding" type= "tns:IServiceManager">
& lt;soap:binding style= "document" transport="http://schemas.xmlsoap.org/soap/http" / & gt;
< имя операции= "getServices">
< soap:operation soapAction="" />
& amp;lt;вход>
& lt;soap:body use= "literal" />
& lt; / input>
& lt;выход>
& lt;soap:body use= "literal" />
< / выход>
< / операция>
< / привязка>
<имя службы= "ServiceManager">
<имя порта=" servicemanager_1 "привязка=" tns:servicemanager_1Binding">
< soap:address location="http://localhost/servicemanager/1" / & gt;
< / порт>
< / сервис>
< / определения>

Url-адрес, который будет использоваться: "https://10.196.2.98/servicemanager/1"

Что я уже пробовал:

Я пытался
<pre lang="HTML"><script type="text/javascript" src="./inc/soapclient.js">


функция getServices(ECard_IP)
{
ВАР Св = новый SOAPClient("./язык WSDL/элемент ServiceManager.язык WSDL");
var svres = sv. invoke ("https:/ /" + ECard_IP + "/servicemanager/1", "getServices", sv);
alert ("SVres" + svres. toSource());
}

что не сработало. Может ли кто-нибудь дать мне пример того, как решить мою проблему?
Спасибо Mikr41

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Проверьте следующую документацию, если вы ищете то же самое soapclient.js. Примеры кода предназначены для .Net, но должны помочь вам получить представление о том, как необходимые материалы написаны на javascript, как кажется.
JavaScript SOAP Client-исходный код[^]

Пожалуйста, дайте мне знать, если вы имеете в виду что-то другое, кроме этого.

:)


mkr3004

Спасибо, моя проблема в том, что я использую php, больше всего смущает тот факт, что мой WSDL-файл находится на стороне сервера моего приложения, Мой soap-сервер должен быть вызван с другим адресом (https://10.196.2.98/servicemanager/1). Глядя на soapclient.js я не вижу способа преодолеть это. Может быть, мне нужно обменять один из адресов http://.. в файле wsdl - если да, то скажите, пожалуйста, какой именно.
Всю эту историю я решил уже с помощью php, но это работает только начиная с localhost, с серверной стороны моего приложения он не получает доступа https://10.196.2.98/servicemanager/1. Можно ли решить эту проблему, установив VPN-доступ с сервера на https://10.196.2.98 и использовать php-кодирование???
Заранее спасибо Mikr41

mkr3004

функция getServices()
{
пробовать
{
var pl = новые SOAPClientParameters();
ПЛ.добавить("расположение", "https://10.196.2.98/servicemananger/1");
SOAPClient.вызова("./язык WSDL/элемент ServiceManager.язык WSDL", "getServices", ЛП, правда, Services_callback);
}
улов (sc)
{
оповещения(СК.toSource());
}
}

функция Services_callback(r, soapResponse)
{
если(soapResponse.xml) / / IE
предупреждение(soapResponse.xml);
еще / / МОЗ
alert ((new XMLSerializer ()). serializeToString(soapResponse));
}
через это я вам
(new ReferenceError ("SOAPClientParameters is not defined", "http://localhost/Asys/trysoap.php", 13))
Что я делаю не так?