Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобрать с Soap и 1С, не выполняется функция 
:(
    Опции темы
Rusman
Дата 25.11.2013, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Здравствуйте!
Есть сервер soap на стороне 1С.
Пытаюсь подключиться и выполнить метод, но выходит ошибка.
Делаю так:
Код

$wsdl = 'http://ip_address:port/kopok/ws_kopok.1cws?wsdl';
$client = new SoapClient($wsdl,array('login'=>'login','trace'=>1,'soap_version' => SOAP_1_2));
$client->__setLocation($wsdl); // если эту строчку не добавляю выходит ошибка Fatal error:  Uncaught SoapFault exception: [HTTP] Not Found in
$request = array(
    'UUID_Rubric'=>'ffd303af-01ce-11df-9cbf-001517b11448',
    'Year'=>2014,
    'EditionNumber'=>101);
$client->GetFree(array('request'=>$request , 'answer'=>array()));


У меня выходит ошибка:
Fatal error:  Uncaught SoapFault exception: [VersionMismatch] Wrong Version in .......
Stack trace:
#0 ..........: SoapClient->__call('GetFree', Array)
#1 ..........: SoapClient->GetFree(Array)
#2 {main}
  thrown in ........... on line 15

Не пойму, что делаю не так.
Или может быть это ошибка на стороне сервера?
Если нужно могу приложить файл wsdl который получаю по этому адресу.

Очень нужен совет. Буду очень благодарен. Спасибо!
PM MAIL ICQ Skype   Вверх
Gromdron
Дата 28.11.2013, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.9.2006

Репутация: 1
Всего: 1



Попробуйте так:

Код

try {
    $client->GetFree(array('request'=>$request , 'answer'=>array()));
}
catch(SoapFault $ex) {
    print $ex->getMessage();
    print $ex->getTraceAsString()
}


И скажите что пишет.
И еще: попробуйте в GetFree применить json, вполне возможно что ваш сервер неправильно понимает запрос, или отдает не то что нужно клиенту. Я бы порекомендовал потестировать его на каком-нибудь string function GetTest( string ), который бы принимал строку и ее же возвращал.

И еще:
Код

$wsdl = 'http://ip_address:port/kopok/ws_kopok.1cws?wsdl';
$client = new SoapClient($wsdl,array('login'=>'login','trace'=>1,'soap_version' => SOAP_1_2));
$client->__setLocation($wsdl); 


От последней строки можно избавиться - вы уже указали wsdl-файл, нет нужды его менять еще раз.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Fortop
Дата 28.11.2013, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Gromdron @  28.11.2013,  00:28 Найти цитируемый пост)
И еще: попробуйте в GetFree применить json, вполне возможно что ваш сервер неправильно понимает запрос, или отдает не то что нужно клиенту.

Почитать сам wsdl не судьба?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Rusman
Дата 28.11.2013, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Вообщем в итоге получилось у меня выполнить функцию.
Код сработал только, тогда когда отключили авторизацию.
Но в 1С рабочей базе такого быть не может, поэтому нужно чтобы работало именно с авторизацией.
Когда добавляю login и password в параметры soap клиента, то структуру wsdl получает, но выходит вот так ошибка.

Вот рабочий код только без авторизации.


Код

$wsdl = 'http://хост/kopok/ws_kopok.1cws?wsdl';
$client = new SoapClient($wsdl,
array(
'trace'=>1,
'soap_version' => SOAP_1_2));

$request = array(
    'UUID_Rubric'=>'7f4e6f4e-01c4-11df-ab7d-005056c00008',
    'Year'=>2014,
    'EditionNumber'=>101);

$response = $client->GetFree(array('request'=>$request,'answer'=>array()));
print_r($response);


если когда включается авторизация, то добавляю
Код

$client = new SoapClient($wsdl,
array(
'login',=>$login,
'password'=>$pass,
'trace'=>1,
'soap_version' => SOAP_1_2));


И появляется ошибка именно на вызове метода GetFree:

Fatal error:  Uncaught SoapFault exception: [VersionMismatch] Wrong Version in

Посоветуйте, как решить этот вопрос. Большое всем спасибо!

PM MAIL ICQ Skype   Вверх
Gromdron
Дата 28.11.2013, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.9.2006

Репутация: 1
Всего: 1



http://toster.ru/q/2120

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.