|
поддержка Cookie при работе с веб-службой в 1C | ☑ | ||
---|---|---|---|---|
0
Anarki
17.05.13
✎
08:30
|
Нужно получать данные с веб службы.
В описании службы говориться, что "Основная часть функций требует наличия активного сеанса, который создается с помощью аутентификации (функция Login). После успешной аутентификации, идентификация клиента происходит по средствам технологии передачи cookie." Прокси = WSСсылки.WS_LERS.СоздатьWSПрокси("http://www.lers.ru/website/api","Api","ApiSoap"); Прокси.Пользователь = "admin"; Прокси.Пароль = "gfhjkm"; Авторизация = Прокси.Login("admin","gfhjkm"); Если Авторизация.ErrorCode <> "None" Тогда Возврат; КонецЕсли; ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.lers.ru/website/api").Получить("GetMeasurePointList"); WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра); СписокТочек = Прокси.GetMeasurePointList(WSПараметр); В переменной "авторизация" свйоство ErrorCode = "None", что как бы намекает что авторизация прошла. Но GetMeasurePointList (функция должны вернуть список или описание ошибки) возвращает ErrorMessage = "Ошибка получения списка точек учета. Пользователь не авторизован". Вот что ответили на сайте разработчика веб службы. - При выполнении метода Login, веб-сервис возвращет Cookie клиенту, содержащий идентификатор сессии. Для дальнейшей работы с веб-сервисом, необходимо передавать эти Cookie обратно. Обычно прокси объекты это делают автоматически, необходимо лишь установить Cookie контейнер. Вот как это выглядит на других языках: C#: Код: // Создаем прокси класс для работы со службой LersApi.Api client = new LersApi.Api(); // Устанавливаем куки-контейнер, необходим для авторизации пользователя client.CookieContainer = new System.Net.CookieContainer(); PowerShell: Код: # Создаем прокси класс для работы со службой $webservice = New-WebServiceProxy -uri $url # Устанавливаем куки-контейнер, необходим для авторизации пользователя $webservice.CookieContainer = New-Object System.Net.CookieContainer Вам необходимо выяснить есть ли поддержка Cookie при работе с веб-службой в 1C. Собственно как заставить это работать, кто шарит? |
|||
1
AaNnDdRrEeYy
17.05.13
✎
09:18
|
напиши com объект на C# и вызывай его методы из 1С, я подобное так делал
|
|||
2
Anarki
17.05.13
✎
09:35
|
(1) Можно поподробней немного? Как написать com объект? и как потом к нему из 1с обращаться?
|
|||
3
AaNnDdRrEeYy
17.05.13
✎
09:40
|
в VS надо написать dll и у public class установить атрибут COMvisible = true.
ну а потом зарегистрировать dll с помощью regasm а в 1с все просто сервис = Новый COMОбъект("ИМяТвоегоКласса"); сервис.ТвойМетодПолученияИлиОтправкиДанных(); |
|||
4
Anarki
17.05.13
✎
09:40
|
И почему именно так? что неужели в из 1с невозможно работать с веб сервисами, которые требуют авторизацию?
|
|||
5
Anarki
17.05.13
✎
09:41
|
(3)Во сколько бы ты оценил написание такого объекта?
|
|||
6
Fragster
гуру
17.05.13
✎
09:41
|
(4) авторизация бывает разная
|
|||
7
Fragster
гуру
17.05.13
✎
09:42
|
я в свое время вместо кукисов сделал токены - сначала вызов веб сервиса авторизации для получения токена, потом куазание его как одного из параметров
|
|||
8
Fragster
гуру
17.05.13
✎
09:42
|
но для этого надо к серверной части доступ иметь, да
|
|||
9
Anarki
17.05.13
✎
09:43
|
(7)А вот у объекта прокси есть свойства Пользователь и пароль. Их можно как нибудь заюзать для авторизации? Это что вообще такое?
|
|||
10
AaNnDdRrEeYy
17.05.13
✎
09:45
|
(4) 1С например с wcf работаь нифига не умеет, это технология net распостранена там где asp используют.
(9) есть авторизация а есть аутентификация у тебя где именно проблемы ? при авторизации? т.е сервер тебе куки выдает? но ты их ему обратно пульнуть не можеш? |
|||
11
Anarki
17.05.13
✎
09:46
|
(10) Да именно так.
|
|||
12
Anarki
17.05.13
✎
09:49
|
Основная часть функций требует наличия активного сеанса, который создается с помощью аутентификации (функция Login). После успешной аутентификации, идентификация клиента происходит по средствам технологии передачи cookie.
Залогинится у меня получается, а вот дальше труба. куки не передается. |
|||
13
Anarki
17.05.13
✎
09:55
|
А что можно попросить реализовать разработчиков веб сервиса у себя, что бы все работало? Например можно при вызове каждого метода дополнительно в качестве параметра указывать логин и пароль, и каждый раз логиниться заново как бы. Я просто не догоняю вообще в этом ничего.
|
|||
14
AaNnDdRrEeYy
17.05.13
✎
09:57
|
у меня по адресу http://www.lers.ru/website/api пишет ресурс не найден, там фильтрация какаято?
|
|||
15
Anarki
17.05.13
✎
10:03
|
http://www.lers.ru/soft/manual/index.html?api_interfaces.html
Вот описание. А сам сервак вот http://78.157.225.111/api.asmx?WSDL. Пользователь ИванПох Пароль Ghbdtn10 |
|||
16
oleg_km
17.05.13
✎
10:06
|
(13) Это неудачный вариант - гонять туда-сюда пароль. Другое дело сам токен. Т.е. вызываешь первым делом функция Логин получаешь некий токен. Потом его как параметр в каждую функцию передаешь? Наверное разработчикам так неудобно будет. Так прозрачно для них токен отсылается сам. Напиши в 1С, может допилят к очередному релизу. Но складывается впечатление что они свои WS-клиенты сделали для своих веб-служб
|
|||
17
Anarki
17.05.13
✎
10:08
|
А токен это гвид типо?
|
|||
18
AaNnDdRrEeYy
17.05.13
✎
10:13
|
(15) попытался импортировать в VS говрит что порт 80 не подходит, в документации у них написано что надо после IP порт указывать, api точно 80 порту висит?
|
|||
19
oleg_km
17.05.13
✎
10:15
|
(17) На твою авторизацию сервер выдает тебе токен - пароль на данную сессию. Он его и записывает в куки. Посмотри фиддлером как называется этот кук, хотя что тебе это даст. Обычно HTTP клиент, в т.ч. и SOAP клиент автоматом сохраняет куки, установленные сервером, и автоматом добавляет к каждому запросу на этот url. 1С похоже так не делает. Поставь Fiddler и прогони тестовую программу и из 1С, сравни что получится
|
|||
20
AaNnDdRrEeYy
17.05.13
✎
10:17
|
(18) все подключился, на 80 висел, это у меня через прокси надобыло
|
|||
21
Anarki
17.05.13
✎
10:17
|
(18)10000 попробуй
|
|||
22
Anarki
17.05.13
✎
10:22
|
(19) написал ребятам про токены) что бы они у себя доработали и сделали как ты сказал. Чую пошлют они меня)
|
|||
23
AaNnDdRrEeYy
17.05.13
✎
10:24
|
вот что у меня импортнулось
http://yadi.sk/d/QPH8oVG64ujts |
|||
24
AaNnDdRrEeYy
17.05.13
✎
10:27
|
биндинг твоей службы
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="ApiSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="true" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://78.157.225.111/api.asmx" binding="basicHttpBinding" bindingConfiguration="ApiSoap" contract="ServiceReference1.ApiSoap" name="ApiSoap" /> </client> </system.serviceModel> </configuration> |
|||
25
Anarki
17.05.13
✎
10:27
|
(12)Ну да как бэ) у меня в 1ске такаяже)
|
|||
26
Anarki
17.05.13
✎
10:27
|
(25)-(23)
|
|||
27
Anarki
17.05.13
✎
10:29
|
(24) Чииво это? как это мне поможет? Что делать?
|
|||
28
AaNnDdRrEeYy
17.05.13
✎
10:34
|
это к тому что в 1С нет такого вот
allowCookies="true", следовательно даже пытаться не стоит |
|||
29
Anarki
17.05.13
✎
10:35
|
(28)Аа понял, спасибо(.
|
|||
30
Anarki
17.05.13
✎
10:37
|
То есть выход - это писать com объект или просить сделать разработчиков альтернативный метод авторизации. А объект сложно написать?
|
|||
31
AaNnDdRrEeYy
17.05.13
✎
11:12
|
что то с логином и паролем не так
Ошибка входа в систему. Не удалось войти в систему. Имя входа или пароль указаны неверно. |
|||
32
Anarki
17.05.13
✎
11:18
|
Ghbdtn
|
|||
33
Anarki
17.05.13
✎
11:18
|
без 10 теперь
|
|||
34
AaNnDdRrEeYy
17.05.13
✎
11:22
|
О получилось, сейчас реализую метод
GetMeasurePointList() если получится достучаться до него из 1С без ошибок выложи исходники. мне самому интересно, пароль тока не меняй. |
|||
35
AaNnDdRrEeYy
17.05.13
✎
11:22
|
* выложу исходники т.е
|
|||
36
Serginio1
17.05.13
✎
11:24
|
||||
37
Serginio1
17.05.13
✎
11:31
|
Заходишь в Вижуал студию,Создаешь библиотеку, добавляешь ссылку на службу (совместимость с 2.0) Добавляешь класс который возвращает объект соединения обернутый в AutoWrap
[ComVisible(true)] [ProgId("ИмяТвоегоПрогИД")] [ClassInterface(ClassInterfaceType.AutoDispatch)] [Guid("Создаешь свой ГУИД")] public class ИмяТвоегоКласс// { public object Подключиться() { return new AutoWrap(new ПодключениеКТвоемуВэбСервису); } А с этим объектом работаешь из 1С как с COM объектом |
|||
38
Serginio1
17.05.13
✎
11:33
|
Либо можешь через NetObjectToIDispatch загрузить свою сборку
используя Активатор.CreateInstance |
|||
39
AaNnDdRrEeYy
17.05.13
✎
11:36
|
(37) что еще за AutoWrap, в каком он пространстве имен? что то msdn про него не вкурсе.
|
|||
40
Anarki
17.05.13
✎
11:41
|
епте) Ниче не понятно)
Что значит "объект соединения обернутый в AutoWrap")) |
|||
41
Anarki
17.05.13
✎
11:43
|
(38)Объясни плиз, что делает NetObjectToIDispatch и как ее можно использовать в моих целях. По ссылкам прошел, там исходник, а что с ним делать? и вообще.
|
|||
42
oleg_km
17.05.13
✎
11:57
|
(38) Может напишем про это статью?
|
|||
43
AaNnDdRrEeYy
17.05.13
✎
12:02
|
во сделал пример того что это работает
http://yadi.sk/d/O5yT_hfl4uu7C |
|||
44
AaNnDdRrEeYy
17.05.13
✎
12:03
|
возвращает свойство Address первого элемента массива, но это только для показа что метод работает.
|
|||
45
Anarki
17.05.13
✎
12:11
|
Бле, у них оказывается есть какая то библиотека com. на сайте скачал ихнем.
Но вот что мне 1ска говорит {Форма.Форма.Форма(40)}: Ошибка при вызове конструктора (COMОбъект) ЛерсОбъект=Новый COMОбъект("LersAuto.Server"); по причине: Класс не зарегистрирован А я его зарегистрировал вот так c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "c:\LersAutomation\Lers.Automation.dll" /codebase "c:\LersAutomation\Lers.Automation.dll" В батник засунул и запустил от имени администратора. |
|||
46
Serginio1
17.05.13
✎
12:15
|
(42) По уму. Вещь нужная только малоиспользуемая.
(41) NetObjectToIDispatch это прокси для доступа к методам свойства итд как статических так и экземплярных классов Net через Оле реализуя IReflеct. По сути это можно сделать так Вместо new LersApi.Api(); объект=Новый COMОбъект("NetObjectToIDispatch"); Тип= объект.ПолучитьТип("LersApi",ПутьКDLL); client=Активатор.CreateInstance(Тип); ТипSystem_Net= объект.ПолучитьТип("System.Net"); client.CookieContainer = ТипSystem_Net.CookieContainer(); Можно Добавить метод возвращающий экземпляр, что бы не вызывать ПолучитьТип, например СоздатьОбъект(ИмяКласса,Расположение,МассивПараметров); |
|||
47
Serginio1
17.05.13
✎
12:16
|
(45) А вызываешь на сервере или клиенте?
|
|||
48
Anarki
17.05.13
✎
12:17
|
(47)сервере
|
|||
49
Serginio1
17.05.13
✎
12:17
|
Зарегистрируй c:\Windows\Microsoft.NET\Framework и 32 разрядную
|
|||
50
Serginio1
17.05.13
✎
12:18
|
А сервер 64 разрядный?
|
|||
51
Anarki
17.05.13
✎
12:18
|
Да по всякому уже пробывал
|
|||
52
Anarki
17.05.13
✎
12:18
|
Если не сложно попробуйте у себя зарегать плиз.
http://lers.ru/soft/download/ |
|||
53
Anarki
17.05.13
✎
12:19
|
Там внизу "Библиотека автоматизации" и по x86 и x64 версии.
|
|||
54
Serginio1
17.05.13
✎
12:20
|
(52) У тебя Net Framework 4.0 стоит на сервере? Вызови регистрацию в командной строке и посмотри что говорит
|
|||
55
Anarki
17.05.13
✎
12:21
|
(54) вызвал - куйню говорит)
|
|||
56
Serginio1
17.05.13
✎
12:22
|
Тьфу стоит конечно, посмотри что командная строка выдает
|
|||
57
Anarki
17.05.13
✎
12:23
|
RegAsm : error RA0000 : Failed to load 'c:\LersAutomation\Lers.Automation.dll' b
ecause it is not a valid .NET assembly |
|||
58
Anarki
17.05.13
✎
12:32
|
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены. C:\Users\Ivan.ASIT>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe "c :\LersAutomation\Lers.Automation.dll" /codebase "c:\LersAutomation\Lers.Automati on.dll" Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1 Copyright (C) Microsoft Corporation 1998-2004. All rights reserved. RegAsm : error RA0000 : An error occurred while writing the registration informa tion to the registry. Administrator permissions are needed to use the selected o ptions. Use an administrator command prompt to complete these tasks. C:\Users\Ivan.ASIT> Вот так точнее |
|||
59
ДенисЧ
17.05.13
✎
12:33
|
"Administrator permissions are needed to use the selected o
ptions. Use an administrator command prompt to complete these tasks. " Тут вроде появилась секция по англишу. Обратись туда, переведут |
|||
60
Anarki
17.05.13
✎
12:35
|
Ошибка при записи регистрации информации
ния в реестр. Права администратора необходимы, чтобы использовать выбранный O ptions. Использование командной строки администратора для выполнения этих задач. Ну дык я же в батник и от имени администратора запускал. Че за чача ваще. |
|||
61
Anarki
17.05.13
✎
12:37
|
А кто знает что в батнике написать надо что бы он не закрывался когда отработает?
|
|||
62
Anarki
17.05.13
✎
12:38
|
О все заработала! Все хана всему! Ща буду одинесить по лютому просто!
|
|||
63
Anarki
17.05.13
✎
12:39
|
Всем спасибо кстати кто откликнулся)
|
|||
64
Anarki
17.05.13
✎
12:46
|
(43) Можешь выложить исходники того, что ты сделал?
|
|||
65
Serginio1
17.05.13
✎
12:55
|
(39) public class AutoWrap : IReflect
Это класс реализующий методы интерфеса IReflect http://rsdn.ru/forum/dotnet/4719475 http://msdn.microsoft.com/ru-ru/library/bctfs8we.aspx Интерфейс IReflect используется для взаимодействия с интерфейсом IDispatch. IReflect определяет подмножество методов отражения Type. Реализация этого интерфейса позволяет настроить поведение типа при доступе к этому объекту из COM-объекта как к объекту IDispatch. Класс ExpandoToDispatchExMarshaler может использоваться для маршалинга объекта, который реализует интерфейс IReflect или IExpando в качестве COM-объекта IDispatch, и наоборот. AutoWrap хранит данные об объекту ссылку и тип и вызывает его методы через рефлексию смотри InvokeMember |
|||
66
AaNnDdRrEeYy
17.05.13
✎
12:56
|
вот исходники
http://yadi.sk/d/UNxdjU_v4uzkk |
|||
67
AaNnDdRrEeYy
17.05.13
✎
12:57
|
(65) после того как появился dynamic 4.0 я забил на этот маршалинг.
|
|||
68
AaNnDdRrEeYy
17.05.13
✎
12:58
|
* не dynamic 4.0 f dynamic в версии net 4.0
|
|||
69
Serginio1
17.05.13
✎
13:07
|
(67) Ты не понял. AutoWrap это обертка к нетовским классам не помеченных как ComVisible = true.
Посмотри примеры Для примера можно сом доступа к классу создать класс обертку new LersApi.Api(); [ComVisible(true)] [ProgId("ИмяТвоегоПрогИД")] [ClassInterface(ClassInterfaceType.AutoDispatch)] [Guid("Создаешь свой ГУИД")] public class ИмяТвоегоКласс// { public object Подключиться() { return new AutoWrap(new LersApi.Api()); } Либо как я уже описывал в 46. |
|||
70
Serginio1
17.05.13
✎
13:08
|
(67) Посмотри внимательней v8: Вопрос по NetObjectToIDispatch
|
|||
71
Leksandr
17.05.13
✎
13:19
|
У меня похожая проблема:
v8: Как получить ответ от сервера (и заголовок set-cookie) Тоже через свои com объекты решать? |
|||
72
Anarki
17.05.13
✎
13:20
|
(71)Еще вот через Soap Toolkit 3.0 посоветовали покурить. Я пока не могу эту фигню тупо скачать даже)
|
|||
73
AaNnDdRrEeYy
17.05.13
✎
13:23
|
(69) все, я понял, приколльная вещь. но я все равно не могу придумать случаев когда нужно гонять между net сборкой и 1с что то отличное от строк чисел и дат. а они com visible, может потом задача какая такая будет.
|
|||
74
AaNnDdRrEeYy
17.05.13
✎
13:25
|
(72) это тебе с ней на vbs проще всего будет. скриптики писать
|
|||
75
Leksandr
17.05.13
✎
13:30
|
Нашел скрипт по работе с куками:
coockies=/tmp/coockies.txt; rm -f $coockies; curl -L -d "user=user&password=pass" -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" -b $coockies -c $coockies http://users.v8.1c.ru А кто подскажет как этот скрипт в 1С выполнить? |
|||
76
Serginio1
17.05.13
✎
13:37
|
(73) Легко. Тот же Вэб сервис где есть куча методов и куча типов.
|
|||
77
ДенисЧ
17.05.13
✎
13:40
|
(75) А ты вообще понимаешь, что делает этот скрипт? Что он запускает, куда лезет...
|
|||
78
Serginio1
17.05.13
✎
13:41
|
Да и есть куча затыков где классов 1С не хватает. Где то помогают javascript? А во многих вещах проще использовать нетовские классы.
|
|||
79
AaNnDdRrEeYy
17.05.13
✎
13:45
|
(75) не надо использовать java скрипты, они не всегда на сервере работают им нужна пользовательская среда, браузер или еще что то.
|
|||
80
ДенисЧ
17.05.13
✎
13:46
|
(79) какие жаба? Ты тоже его (скрипт) не понял?
Это ж шелл линуховый... |
|||
81
Leksandr
17.05.13
✎
13:47
|
На сколько я понимаю скрипт лезет на указанный сайт, отправляет постом логин и пароль ("user=user&password=pass") и сохраняет cookie на диске. если я ошибаюсь - подправьте
|
|||
82
AaNnDdRrEeYy
17.05.13
✎
13:51
|
(80) нутам всякие ($) на php похоже или джаву и строка Windows NT 5.0 - в голову не пришло что это линукс
|
|||
83
AaNnDdRrEeYy
17.05.13
✎
13:54
|
(72) качаеш соап тулкит ставиш, вот скрипт на vbs
Set SOAPClient = CreateObject("MSSOAP.SOAPClient30") SOAPClient.mssoapinit "путь к товоему сервису" SOAPClient.LogIn "логин", "пароль" Set nodes = SOAPClient.ТвойМетод() запускаеш скрипт из 1с |
|||
84
Anarki
17.05.13
✎
14:02
|
(83) Как его запустить из 1с?
|
|||
85
AaNnDdRrEeYy
17.05.13
✎
14:09
|
скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
скрипт.Language = "vbscript"; скрипт.AddCode("тут текст скрипта"); скрипт.Run(); |
|||
86
Anarki
17.05.13
✎
14:13
|
Я по тупому сделал.
Сервис = Новый COMОбъект("MSSOAP.SoapClient30"); Сервис.MSSoapInit("http://78.157.225.111/api.asmx?WSDL"); Сервис.LogIn("ИванПох","300300"); МойМетод = Сервис.GetMeasurePointList(); и..заработало) Правда возавращает чета непонятную туеву кучу свойств(Это наверно самого MSSOAP.SoapClient30) и подтупливает заметно. |
|||
87
oleg_km
17.05.13
✎
14:16
|
(86) Мелкомягкие бросили его поддержку, ну и недоделан он был малеха. Советую тебе разобраться с примером Serginio1 (70) освоишь дотНет: сразу почуствуешь, что стал выше ростом раза в три
|
|||
88
Anarki
17.05.13
✎
14:18
|
Блее, чета не так все радужно, в оригинале метод должен список объектов возвращать, а тут он мне типо вот такое выдает "one4ЦОДетский сад № 2 - ЦОул. Ларина 1HeatRegular3Normalfalsefalsefalse1388SevenKT7КТtrue5ЦОШкола № 6 - ЦОул. Рябиковская, 83/1HeatRegular4Normalfalsefalsetrue1428SevenKT7КТtrue6ЦОДХШ - ЦОул. Океанская, 7аHeatRegular5Normalfalsefalsefalse1470SevenKT7КТtrue7ГВСДХШ - ГВСул. Океанская, 7аHotWaterRegular6Normaltruefalsefalse1470SevenKT7КТtrue10ЦОДетский сад № 3 - ЦОул. Маршала Блюхера 37/1HeatRegular9Normalfalsefalsefalse1353SevenKT7КТtrue11ГВСДетский сад № 3 - ГВСул. Маршала Блюхера"
Это потомучто ком типа?) короче, все пропало) |
|||
89
AaNnDdRrEeYy
17.05.13
✎
14:21
|
(88)сохранить как текст и парсить, однозначно!!! )))
|
|||
90
Serginio1
17.05.13
✎
14:22
|
(86) Можешь Загрузить фабрику например через чтение
ФайлыXSD = Новый Массив(); ФайлыXSD.Добавить(ФайлСПрайсом); Фабрика = СоздатьФабрикуXDTO(ФайлыXSD); Или Фабрика=Прокси.ФабрикаXDTO; ТвойОбъект=Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаВыгрузки.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); где Чтение= новый ЧтениеXML; Чтение.УстановитьСтроку(Строка); |
|||
91
Serginio1
17.05.13
✎
14:24
|
||||
92
Anarki
17.05.13
✎
14:24
|
(89)На такое я никогда не пойду))
(87)я бы с радостью) а с чего начать? я вообще ничего не догнал че вы там понаписали) |
|||
93
Anarki
17.05.13
✎
14:29
|
(90)поясни плиз
|
|||
94
AaNnDdRrEeYy
17.05.13
✎
14:31
|
(90) утилита есть такая wsdl.exe создает файл xsd из wsdl описание сервиса, потом этот файл xsd можно загрузить в 1С (пакеты XDTO) и с помощью этого пакета читать xml переданный веб срвисом
|
|||
95
Serginio1
17.05.13
✎
14:34
|
Обычно по протоколу Soap тебе возвращается XML. Есть такое понятие как схема XSD которая описывает все типы. Короче это очень долго объяснять. Я тебе уже дал кучу советов. Ты же на C# пишешь. Что тебе непонятно в 69
|
|||
96
Anarki
17.05.13
✎
14:36
|
Ну меня одно из свойств возвращаемого GetMeasurePointList() как раз XML со всей фигней.
Мне нужно этот XML прочитать щас и все, будет счастье. А прочитать его можно с помощью вот этой ФабрикиXDTO да? (95)Какое C#, я слов таких не знаю даже) |
|||
97
Serginio1
17.05.13
✎
14:40
|
(96) Можно прочитать через
Чтение= новый ЧтениеXML; Чтение.УстановитьСтроку(СтрокаВозвращенная GetMeasurePointList); Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаВыгрузки.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); |
|||
98
oleg_km
17.05.13
✎
14:40
|
(95) Это не он, это AaNnDdRrEeYy с C# дружит
(96) Это просто может быть XML. В рамках веб-службы это просто строка |
|||
99
Serginio1
17.05.13
✎
14:42
|
Либо можешь распарсить как в 91. Она возврати Тазблицу значений у которй может быть таблица значений Аотрибутов и Узлов
Функция СоздатьТзАтрибутов() Тз=Новый ТаблицаЗначений; Колонки=Тз.Колонки; Колонки.Добавить("Имя",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Значение",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Возврат Тз КонецФункции Функция СоздатьТзУзлов() Тз=Новый ТаблицаЗначений; Колонки=Тз.Колонки; Колонки.Добавить("Имя",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Значение",ОбщегоНазначения.ПолучитьОписаниеТиповСтроки(0)); Колонки.Добавить("Узел",Новый ОписаниеТипов("ТаблицаЗначений")); Колонки.Добавить("Атрибуты",Новый ОписаниеТипов("ТаблицаЗначений")); Возврат Тз КонецФункции |
|||
100
Anarki
17.05.13
✎
14:50
|
(97)Объясни плиз, в твоем примере "Фабрика","ЧтениеXML" и "ФабрикаВыгрузки" откуда берутся?
|
|||
101
Serginio1
17.05.13
✎
14:57
|
Просто скопировано из разных источников.
Фабрика=Прокси.ФабрикаXDTO; (либо смотри 90) ЧтениеXML= новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаВозвращенная GetMeasurePointList); Фабрика.ПрочитатьXML(ЧтениеXML,Фабрика.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); |
|||
102
Serginio1
17.05.13
✎
14:59
|
Можно перед чтением Фабрикой
ЧтениеXML.ПерейтиКСодержимому(); |
|||
103
Anarki
17.05.13
✎
15:00
|
Спасибо
|
|||
104
Leksandr
17.05.13
✎
17:02
|
Может поможет:
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("POST", "https://site.ru",0); WinHttp.Send(НовыйЗапрос); Кукиз= WinHttp.getResponseHeader("Set-cookie"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |