2014-11-25 2 views
0

Это результат моих функций var_dump:Как вызвать методы SOAP через PHP?

echo "<pre>"; var_dump($client->__getFunctions()); echo "</pre>"; 
array(10) { 
    [0]=> 
    string(34) "Read_Result Read(Read $parameters)" 
    [1]=> 
    string(55) "ReadByRecId_Result ReadByRecId(ReadByRecId $parameters)" 
    [2]=> 
    string(58) "ReadMultiple_Result ReadMultiple(ReadMultiple $parameters)" 
    [3]=> 
    string(49) "IsUpdated_Result IsUpdated(IsUpdated $parameters)" 
    [4]=> 
    string(67) "GetRecIdFromKey_Result GetRecIdFromKey(GetRecIdFromKey $parameters)" 
    [5]=> 
    string(40) "Create_Result Create(Create $parameters)" 
    [6]=> 
    string(64) "CreateMultiple_Result CreateMultiple(CreateMultiple $parameters)" 
    [7]=> 
    string(40) "Update_Result Update(Update $parameters)" 
    [8]=> 
    string(64) "UpdateMultiple_Result UpdateMultiple(UpdateMultiple $parameters)" 
    [9]=> 
    string(40) "Delete_Result Delete(Delete $parameters)" 
} 

Я пытался вызвать методы чтения, например:

$client->__soapCall("Read" , array('No'=>'142JC242')); 

На самом деле я не понимаю, что это «Read_Result» ? и Чтение (чтение $ параметров)?. и как я их использовал? thx

Теперь я получаю это: Неустранимая ошибка: Исключить исключение SoapFault: [HTTP] Неавторизованный в ...

+0

'Read' - это имя метода, а' Read_Result' - возвращаемый тип. – mudasobwa

+0

@ mudasobwa Вы можете быть более конкретным или написать ответ? Я был бы очень признателен. Большое спасибо ! –

+0

@Ohgodwhy http://php.net/manual/en/soapclient.getfunctions.php: «Массив прототипов функций SOAP, детализирующий тип возврата, имя функции и тип-намеченные параметры». – mudasobwa

ответ

0

У вас есть методы:

  • Читать
  • ReadByRecId
  • ReadMultiple
  • IsUpdated
  • GetRecIdFromKey
  • Создать
  • CreateMultiple
  • UPDA т.е
  • UpdateMultiple
  • Удалить

Каждый метод принимает $parameters и возвращает METHODNAME_Result значение. Это оно. Для вызова метода вы можете попробовать smth:

$client->__soapCall("ReadMultiple", array()); 

На данный момент мы не знаем, какие параметры ожидаются методами. Откуда вы получаете эту конечную точку? Была ли какая-то документация?

+0

У меня нет документации: (Я должен сам это выяснить. Может быть, вы можете сказать мне, что мне нужно указать в качестве параметра для моей функции здесь: http://attin.netlogiq.eu/h_b/WebItem.wsdl. Это все новое для меня. –

+0

Если вы попытаетесь вызвать какую-либо функцию, вы получите сообщение об ошибке «Неотобрано исключение: SoapFault: Unauthorized». Это означает, что для этой услуги требуется авторизация для доступа к данным. Настройка SoapHeaders [описывается здесь] (http://php.net/manual/en/soapclient.setsoapheaders.php). – mudasobwa

+0

вы можете отправить ответ здесь: http://stackoverflow.com/questions/27126651/getting-unauthorized-when-i-called-a -function-in-soap-via-php? –

0

Если вы хотите понять файл WSDL, я бы рекомендовал потратить некоторое время на ознакомление с XML-схемами. Вы можете видеть из <definitions> тега, что это WSDL 1 файл:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" ... > 

WSDL-1,2 спецификации можно получить здесь:

http://www.w3.org/TR/2003/WD-wsdl12-20030303/

При создании экземпляра SoapClient, вы можете использовать либо это в режиме WSDL или не WSDL. В этом случае, поскольку у вас есть файл WSDL, вы можете использовать его в режиме WSDL.

Файл WSDL предоставляет спецификацию методов, предоставляемых службой. Вы можете напрямую вызывать имена функций в качестве методов SoapClient, например:

$client->Read($params); 

вызовет операцию чтения.

Если вы посмотрите на этот раздел WSDL:

<operation name="Read"> 
     <input name="Read" message="tns:Read"/> 
     <output name="Read_Result" message="tns:Read_Result"/> 
    </operation> 

Вы увидите, что это операция чтения ожидает входящий параметр, определяемый Read и возвращает ответ, определяемый Read_Result.

Мой отзыв не намеревается быть всеобъемлющим, но я надеюсь, что у вас будет достаточно информации, чтобы начать работу.

+0

вы можете отправить ответ здесь: http://stackoverflow.com/ вопросы/27126651/получение-неавторизованный-когда-я-вызывается-функция-в-мыло-через-php? спасибо –