WSO2 WSF/PHP сервер с визуальным клиентом foxpro
Я использую WSO2 WSF/PHP (wamp) и пытаюсь использовать пример веб-службы (echo_service.php) из клиента foxpro. Я пробовал этот код безуспешно:
TEXT TO requestPayloadString NOSHOW
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header/>
<soapenv:Body>
<ns1:echoString xmlns:ns1="http://wso2.org/wsfphp/samples">
<text>Hello World!</text>
</ns1:echoString>
</soapenv:Body>
</soapenv:Envelope>
ENDTEXT
LOCAL httpRequest
httpRequest = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
httpRequest.Open("GET", "http://192.168.56.101/samples/echo_service.php", .F.)
httpRequest.SetRequestHeader("Content-Type", "text/xml; charset=utf-8")
httpRequest.SetRequestHeader("SOAPAction", "http://wso2.org/wsfphp/samples/echoString")
httpRequest.Send(requestPayloadString)
? httpRequest.ResponseText
? TRANSFORM( httpRequest.Status )
? TRANSFORM( httpRequest.StatusText )
Приведенное выше возвращает описание службы (Deployed Services samples_echo_service.php Available Operations echoString) с status = 200
а также statustext = OK
,
С POST
я получил
Transport identified SOAP version does not match with SOAP message version
status=500 statustext=Internal Server Error
Следующий код возвращает OLE error
(Error 1429
):
SoapMapper:Restoring data into SoapMapper returnVal failed HRESULT=0x80070057:
The parameter is incorrect.
- Client:Unspecified client error. HRESULT=0x80070057: The parameter is incorrect.
lcWSDL = "http://192.168.56.101/samples/echo_service.php?wsdl"
loSoap = Createobject("mssoap.soapclient30")
loSoap.MSSoapInit(lcWSDL)
loSoap.echoString("hello")
Образцы клиента в php работают нормально. Код работает с другими веб- сервисами (пробовал http://webservicex.net/periodictable.asmx)
Нужна помощь, чтобы решить эту проблему.
Кроме того, если использование веб-службы из WSO2 WSF / PHP слишком сложное, есть ли альтернатива PHP, которая работает с Visual Foxpro?
Благодарю.
1 ответ
После анализа и сравнения заголовков, отправленных foxpro и работающим клиентом php, единственное отличие было следующим:
httpRequest.SetRequestHeader("Content-Type", "application/soap+xml;charset=UTF-8")
Замена типа содержимого решила проблему, но я все еще не могу использовать soapclient...