|
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); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |