PHP - Zend мыльный запрос к .NET SOAP серверу - PullRequest
0 голосов
/ 08 июня 2010

Я бы хотел немного помощи здесь.

Я пытаюсь отправить запрос на сервер .NET SOAP из PHP с Zend.

У меня есть файл WSDL, но он не содержит никакой информации заголовка. Хотя я пытался добавить пользовательский заголовок, это, похоже, не работает, и хуже всего то, что сам файл WSDL не выглядит "правильным" .....

Вот ссылка: http://www.speedex.gr/getvoutrans/getvoutrans.asmx WSDL можно найти по той же ссылке, добавив? WSDL

Мой запрос: GetVouTrans

Спасибо заранее!

1 Ответ

0 голосов
/ 08 июня 2010

URL http://www.speedex.gr/getvoutrans/getvoutrans.asmx?op=GetVouTrans показывает ожидаемый запрос.

Если вы перезапишете функцию SoapClient :: __ doRequest , вы можете проверить, что вы отправляете.
(не забудьте позвонить родителю :: __ doRequest ())

Вы даже можете изменить xml для внесения конкретных изменений в .net.

К плохому SOAP не всегда работает из коробки между разными языками.
У меня были проблемы с php 5.2.0 (debian) и java-сервером, проблема исчезла при обновлении до версии php 5.2.8

Комментарий на странице руководства __doRequest предлагает:

class MSSoapClient extends SoapClient {

  function __doRequest($request, $location, $action, $version) {
    $namespace = "http://tempuri.com";

    $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1);
    $request = preg_replace('/<ns1:(\w+)/', '<$1', $request);
    $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request);

    // parent call
    return parent::__doRequest($request, $location, $action, $version);
  }
}

$client = new MSSoapClient(...);

Но этот комментарий относится к 2007 году, поэтому ваш пробег может отличаться.

...