Имя: Пароль:
1C
1С v8
HTTPСоединение.ОтправитьДляОбработки
,
0 andr_hav
 
15.07.13
11:13
Есть такой Web-сервис
http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws?wsdl
когда набираю в браузере возвращается описание, значит он рабочий, даже код написанный с использованием WSОпределения - работает.

Хочу взаимодействие организовать через запрос используя HTTPСоединение.

Код:

ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла();
ОбъектЗапись = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", , Ложь);
ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML);
ОбъектЗапись.ЗаписатьОбъявлениеXML();

// выводим корневой элемент CallTSD
ОбъектЗапись.ЗаписатьНачалоЭлемента("CallTSD");

// выводим элемент Command
ОбъектЗапись.ЗаписатьНачалоЭлемента("Command");
ОбъектЗапись.ЗаписатьТекст("команда");
ОбъектЗапись.ЗаписатьКонецЭлемента();

 
  // выводим элемент Data
   ОбъектЗапись.ЗаписатьНачалоЭлемента("Data");
   ОбъектЗапись.ЗаписатьТекст("дата");
   ОбъектЗапись.ЗаписатьКонецЭлемента();
   

// записываем конец для корневого элемента
ОбъектЗапись.ЗаписатьКонецЭлемента();

ОбъектЗапись.Закрыть();

АдресСервераОнлайнПроверки = "upr.softrust.ru";
РесурсНаСервере = "/TechosilaDrTSD/ws/tsd.1cws?wsdl";

Прокси = Новый ИнтернетПрокси;
Прокси.Пароль = "tsd";
Прокси.Пользователь = "tsd";


// устанавливаем соединение с сервером
Попытка
   Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, ,"tsd","tsd", );
Исключение
   Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
       + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
   Возврат;
КонецПопытки;

// посылаем запрос
ФайлРезультата = ПолучитьИмяВременногоФайла();
Попытка
   Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата);
   Соединение = Неопределено;
Исключение
   Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;

сделал как в синтаксис помошнике, все отрабатывает без ошибок, но в ответ получаю описание данного сервиса,  а не ответ, который описан в обработчике сервиса.

Что делать, я уже и в программе XMLSpy тестировал - тут работает нормально, ответ получается.
1 andr_hav
 
15.07.13
11:15
текст запроса в файле с выдуманными значениями параметрами, но тогда все равно должен быть ответ об ошибке:
<?xml version="1.0" encoding="UTF-8"?>
<CallTSD>
<Command>команда</Command>
<Data>дата</Data>
</CallTSD>
2 acsent
 
15.07.13
11:17
в 1с есть же методы работы с веб сервисами
3 andr_hav
 
15.07.13
11:24
я использовал метод:

//Определение = Новый WSОпределения("http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws?wsdl","tsd","tsd");
   //    
   //Прокси = Новый WSПрокси(Определение,"http://3pl.spsr.ru/","TSD","TSDSoap");
   //Прокси.Пользователь = "tsd";
   //Прокси.Пароль = "tsd";
   //СтрокаОтвета = Прокси.CallTSD(КомандаТСД,ДанныеКоманды);


но он маленький объем данных пересылает, а мен нужно что б по больше можно было отправлять.
4 acsent
 
15.07.13
11:34
используй фиддлер для проверки
5 andr_hav
 
15.07.13
11:41
у меня ответ по запросу не приходит, только в 1С, в других программах тестирования и отладки, ответ от сервиса приходит нормально, вот если бы у кого нибуть был рабочий код, пусть даже к своему web-сервису
6 acsent
 
15.07.13
11:44
(5) значит 1с посылает что-то не то. см (4)
7 andr_hav
 
15.07.13
11:56
1с получает файл описания, такой же, если бы  я набрал в брауpере
http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws?wsdl, то получил бы XML, я вообще не представляю что еще можно исправить
8 Infsams654
 
15.07.13
12:05
(0) по-моему ОтправитьДляОбработки не ждет получение ответа.
Вот если в отладчике после Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата);
остановиться и подождать несколько секунд (или минут, в зависимости от объема пердаваемых данных), то можно и нормального ответа дождаться...
9 acsent
 
15.07.13
12:13
(7) не хочешь отлаживать - ну тогда сиди и мучайся
10 acsent
 
15.07.13
12:14
(8) очень даже ждет
11 andr_hav
 
15.07.13
12:19
ОтправитьДляОбработки возвращает ответ и записывает в файл "ФайлРезультата", отлаживать сейчас начну, только скачаю ПО
12 Serginio1
 
15.07.13
12:39
13 andr_hav
 
15.07.13
14:19
сделал как посоветовали в (79), все отработало без ошибок, запросило авторизацию ввел пароль и логин, смотрю файл овета, а там:

 <?xml version="1.0" encoding="UTF-8" ?>
- <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://3pl.spsr.ru/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://3pl.spsr.ru/" name="TSD" targetNamespace="http://3pl.spsr.ru/">
- <types>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://3pl.spsr.ru/" targetNamespace="http://3pl.spsr.ru/" elementFormDefault="qualified">
- <xs:element name="CallTSD">
- <xs:complexType>
- <xs:sequence>
 <xs:element name="Command" type="xs:string" />
 <xs:element name="Data" type="xs:string" />
 </xs:sequence>
 </xs:complexType>
 </xs:element>
- <xs:element name="CallTSDResponse">
- <xs:complexType>
- <xs:sequence>
 <xs:element name="return" type="xs:string" nillable="true" />
 </xs:sequence>
 </xs:complexType>
 </xs:element>
 </xs:schema>
 </types>
- <message name="CallTSDRequestMessage">
 <part name="parameters" element="tns:CallTSD" />
 </message>
- <message name="CallTSDResponseMessage">
 <part name="parameters" element="tns:CallTSDResponse" />
 </message>
- <portType name="TSDPortType">
- <operation name="CallTSD">
 <input message="tns:CallTSDRequestMessage" />
 <output message="tns:CallTSDResponseMessage" />
 </operation>
 </portType>
- <binding name="TSDSoapBinding" type="tns:TSDPortType">
 <soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="CallTSD">
 <soapbind:operation style="document" soapAction="http://3pl.spsr.ru/#TSD:CallTSD" />
- <input>
 <soapbind:body use="literal" />
 </input>
- <output>
 <soapbind:body use="literal" />
 </output>
 </operation>
 </binding>
- <binding name="TSDSoap12Binding" type="tns:TSDPortType">
 <soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="CallTSD">
 <soap12bind:operation style="document" soapAction="http://3pl.spsr.ru/#TSD:CallTSD" />
- <input>
 <soap12bind:body use="literal" />
 </input>
- <output>
 <soap12bind:body use="literal" />
 </output>
 </operation>
 </binding>
- <service name="TSD">
- <port name="TSDSoap" binding="tns:TSDSoapBinding">
- <documentation>
 <wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1" />
 </documentation>
 <soapbind:address location="http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws" />
 </port>
- <port name="TSDSoap12" binding="tns:TSDSoap12Binding">
 <soap12bind:address location="http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws" />
 </port>
 </service>
 </definitions>

то есть, приходит описание сервиса, а мнt нужен ответ. Почему так происходит я не пойму, ответа в интернете не нахожу, может на сервер сервиса что-то настраивать-разрешать нужно?
14 Infsams654
 
15.07.13
14:23
(10) а я говорю, не ждет... Проверял, есть даже в 1С пост на ошибку.
15 Infsams654
 
15.07.13
14:28
(13) остановись в отладчике как написано в (8) и подожди. Потом посмотри ответ
16 Serginio1
 
15.07.13
14:28
Тебе приходит WSDL в не нем есть секция  Service
судя по ней у тебя адрес такой

hostName="TSDSoap";
urlAddress="http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws";
17 Serginio1
 
15.07.13
14:41
Ну и в сам опен можешь передавать юзера и пароль
http://msdn.microsoft.com/en-us/library/windows/desktop/ms757849(v=vs.85).aspx
18 andr_hav
 
15.07.13
15:56
Вообщем ни чего не получается

меняю
hostName="TSDSoap";
urlAddress="http://upr.softrust.ru/TechosilaDrTSD/ws/tsd.1cws";
пишет server error,
19 Serginio1
 
15.07.13
16:02
(18) На каком этапе? Юзер и пароль устанавливаешь при соединении?
xmlHttp.OPEN ("POST", urlAddress, False, User,Password);