Имя: Пароль:
1C
1С v8
web сервисы. Ошибка при работе с Soap клиентом
0 Nikulin
 
22.06.12
13:07
Всем привет!
2-й день долблюсь.

приведу сразу ругань из апачи:

[Fri Jun 22 12:49:16 2012] [error] [client 127.0.0.1] PHP Warning:  SoapClient::SoapClient(http://localhost/ws/ostatok_tovara?wsdl) [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: failed to open stream: \xcf\xee\xef\xfb\xf2\xea\xe0 \xf3\xf1\xf2\xe0\xed\xee\xe2\xe8\xf2\xfc \xf1\xee\xe5\xe4\xe8\xed\xe5\xed\xe8\xe5 \xe1\xfb\xeb\xe0 \xe1\xe5\xe7\xf3\xf1\xef\xe5\xf8\xed\xee\xe9, \xf2.\xea. \xee\xf2 \xe4\xf0\xf3\xe3\xee\xe3\xee \xea\xee\xec\xef\xfc\xfe\xf2\xe5\xf0\xe0 \xe7\xe0 \xf2\xf0\xe5\xe1\xf3\xe5\xec\xee\xe5 \xe2\xf0\xe5\xec\xff \xed\xe5 \xef\xee\xeb\xf3\xf7\xe5\xed \xed\xf3\xe6\xed\xfb\xe9 \xee\xf2\xea\xeb\xe8\xea, \xe8\xeb\xe8 \xe1\xfb\xeb\xee \xf0\xe0\xe7\xee\xf0\xe2\xe0\xed\xee \xf3\xe6\xe5 \xf3\xf1\xf2\xe0\xed\xee\xe2\xeb\xe5\xed\xed\xee\xe5 \xf1\xee\xe5\xe4\xe8\xed\xe5\xed\xe8\xe5 \xe8\xe7-\xe7\xe0 \xed\xe5\xe2\xe5\xf0\xed\xee\xe3\xee \xee\xf2\xea\xeb\xe8\xea\xe0 \xf3\xe6\xe5 \xef\xee\xe4\xea\xeb\xfe\xf7\xe5\xed\xed\xee\xe3\xee \xea\xee\xec\xef\xfc\xfe\xf2\xe5\xf0\xe0.\r\n in C:\\www\\test.php on line 28, referer: http://localhost/test.php
[Fri Jun 22 12:49:16 2012] [error] [client 127.0.0.1] PHP Warning:  SoapClient::SoapClient() [<a href='soapclient.soapclient'>soapclient.soapclient</a>]: I/O warning : failed to load external entity &quot;http://localhost/ws/ostatok_tovara?wsdl&quot; in C:\\www\\test.php on line 28, referer: http://localhost/test.php
[Fri Jun 22 12:49:16 2012] [error] [client 127.0.0.1] PHP Fatal error:  SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/ws/ostatok_tovara?wsdl' : failed to load external entity "http://localhost/ws/ostatok_tovara?wsdl"\n in C:\\www\\test.php on line 28, referer: http://localhost/test.php
[Fri Jun 22 12:49:16 2012] [error] [client 127.0.0.1] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in C:\\www\\test.php on line 50, referer: http://localhost/test.php

Я так понимаю что СОАП у меня работает это видно в пхпинфо.
Вот код который приводит к этой ошибке:

$client = new SoapClient("http://localhost/ws/ostatok_tovara?wsdl");

Также прбовал:

$client = new SoapClient("http://localhost/ws/ostatok_tovara?wsdl", array('location'=>'http://localhost/ws/ostatok_tovara.1cws', 'login' => $username, 'password' => $password));

При этом если вызвать просто:

http://localhost/ws/ostatok_tovara?wsdl

то в браузере возникает описание веб сервиса.

Подкажите куда копать чтобы исправить:
при вызове моего C:\\www\\test.php браузер 30 секунд думает и после этого ничего не происходит.

Спасибо!
1 Nikulin
 
22.06.12
13:11
Вообще не понятно что в ругане приоритетно
толи "failed to open stream" из первой ошибки
толи всеже " failed to load external entity "
все 4 строки озникают по истечении 30 секунд.
Но в лбм случае не наю куда копать =(
2 Nikulin
 
22.06.12
13:13
Уточню.
Апач установлен на виндовс7
делаю все локально.
Ставилось все отдельно (в дэнвере у меня 1с не увидила вэб сервер)
3 Fragster
 
гуру
22.06.12
13:14
веб сервисы 1с слабо совместимы с 1с. сейчас пилю класс для работы нормальной, но оччччень медленно :)
4 Fragster
 
гуру
22.06.12
13:14
*php
5 Nikulin
 
22.06.12
13:17
А имеет значение что у меня :
http://localhost/ws/ostatok_tovara?wsdl

Показывает описание сервиса а:
http://localhost/ws/ostatok_tovara.1cvs?wsdl
ругается что :
Сервис не найден.
An error occurred processing this request.

хотя во многих примерах вижу второй вариант...
6 Nikulin
 
22.06.12
13:19
приведу полностью описание сервиса которое выдается.
Чтото оно слишком большое для такого простого сервиса.
и не нравится что там сразу чтото про Soap сказано...

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://localhost" name="ostatok_tovara" targetNamespace="http://localhost">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://localhost" targetNamespace="http://localhost" elementFormDefault="qualified">
<xs:element name="Getinfo">
<xs:complexType>
<xs:sequence>
<xs:element name="Param" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetinfoResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="GetinfoRequestMessage">
<part name="parameters" element="tns:Getinfo"/>
</message>
<message name="GetinfoResponseMessage">
<part name="parameters" element="tns:GetinfoResponse"/>
</message>
<portType name="ostatok_tovaraPortType">
<operation name="Getinfo">
<input message="tns:GetinfoRequestMessage"/>
<output message="tns:GetinfoResponseMessage"/>
</operation>
</portType>
<binding name="ostatok_tovaraSoapBinding" type="tns:ostatok_tovaraPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Getinfo">
<soapbind:operation style="document" soapAction="http://localhost#ostatok_tovara:Getinfo"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="ostatok_tovaraSoap12Binding" type="tns:ostatok_tovaraPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Getinfo">
<soap12bind:operation style="document" soapAction="http://localhost#ostatok_tovara:Getinfo"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="ostatok_tovara">
<port name="ostatok_tovaraSoap" binding="tns:ostatok_tovaraSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="/ws/ws/ostatok_tovara"/>
</port>
<port name="ostatok_tovaraSoap12" binding="tns:ostatok_tovaraSoap12Binding">
<soap12bind:address location="/ws/ws/ostatok_tovara"/>
</port>
</service>
</definitions>
7 Fragster
 
гуру
22.06.12
13:20
вот это фигня какая-то: <soapbind:operation style="document" soapAction="http://localhost#ostatok_tovara:Getinfo"/>
8 Nikulin
 
22.06.12
13:20
или в (6) все нормально?
9 Nikulin
 
22.06.12
14:46
(7) а как эту фигню убрать? может из за этого и соап библиотека не рабоатет...
10 Nikulin
 
22.06.12
15:17
спецыыыы есть? =)
или просто люди добрые поможите! =))
11 Nikulin
 
22.06.12
16:30
не ужели все в пятничной ветке?
12 Svirepy
 
22.06.12
16:37
Попробуй лишний "ws" дописать
$client = new SoapClient("http://localhost/ws/ws/ostatok_tovara?wsdl");
типО так...
13 Nikulin
 
22.06.12
17:02
(12) пробовал. (( тож самое.

Удалось расшифроать казябры в 1 сообщении.
Они гласят следующее:

Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
14 Nikulin
 
22.06.12
17:39
Сравнил лог апача и журнал в 1с.
Соап не обращается в 1с. в журнале не отражается попытка коннекта сервиса.
Хотя если на прямую то описание сервиса отображается в браузере.
Что же не так.
15 Nikulin
 
22.06.12
17:49
Ошибку авторизации исключил. Вообще поудалял всех пользователей.
*woll*
16 Nikulin
 
22.06.12
18:06
Есть продвижки но опять воткнулся.
Думаю что наконецто СОП достучался до 1с

Поменял порт на сервере (просто так..)
и теперь вызываю по такой строке:
$client = new SoapClient("http://127.0.0.1:8080/ws/ws/ostatok_tovara?wsdl");
$params["param"]="123456";
$result = $client->getinfo($params);

ругается на последнюю строчку:
$result = $client->getinfo($params);

Вот таким матом.

[Fri Jun 22 18:02:02 2012] [error] [client 127.0.0.1] PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Unable to parse URL in C:\\www\\test2.php:16\nStack trace:\n#0 [internal function]: SoapClient->__doRequest('<?xml version="...', '/ws/ws/ostatok_...', 'http://www.w3.o...', 1, 0)\n#1 C:\\www\\test2.php(16): SoapClient->__call('getinfo', Array)\n#2 C:\\www\\test2.php(16): SoapClient->getinfo(Array)\n#3 {main}\n  thrown in C:\\www\\test2.php on line 16

Не соображу что бы это значило...
17 Nikulin
 
22.06.12
18:07
т.е. 30 секундной паузы нет. результат ошибки парсинга выдается моментально.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn