Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Получение данных через SOAP в Access / 19 сообщений из 19, страница 1 из 1
07.10.2011, 14:10
    #37472884
nickstarnew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Доброго времени суток.

Может кто имел опыт, подскажите: как из Access подключиться к веб-серивисам (WSDL)?
...
Рейтинг: 0 / 0
07.10.2011, 15:35
    #37473119
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
nickstarnewДоброго времени суток.

Может кто имел опыт, подскажите: как из Access подключиться к веб-серивисам (WSDL)?

дык, веб-сервис - веб-сервису рознь )) ...

и почему так сразу через SOAP ?

если сервис работает по Get и на вход.нужны простые параметры, то можно вообще через Application.ImportXML "справится" ...
если параметр - хмл, то через MSXML2.XMLHTTP/MSXML2.DOMDocument, имхо, проще

а для SOAP, как минимум, прийдётся устанавливать Web Service References Tool
да и не с каждым сервисом он сейчас может работать, - МС положил прекратил его поддержку в 2005г.

...нуу, даа, соап - так соап
http://msdn.microsoft.com/en-us/library/aa140319(v=office.10).aspx
...
Рейтинг: 0 / 0
07.10.2011, 15:54
    #37473151
nickstarnew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
qwerty112nickstarnewДоброго времени суток.

Может кто имел опыт, подскажите: как из Access подключиться к веб-серивисам (WSDL)?

дык, веб-сервис - веб-сервису рознь )) ...

и почему так сразу через SOAP ?

если сервис работает по Get и на вход.нужны простые параметры, то можно вообще через Application.ImportXML "справится" ...
если параметр - хмл, то через MSXML2.XMLHTTP/MSXML2.DOMDocument, имхо, проще

а для SOAP, как минимум, прийдётся устанавливать Web Service References Tool
да и не с каждым сервисом он сейчас может работать, - МС положил прекратил его поддержку в 2005г.

...нуу, даа, соап - так соап
http://msdn.microsoft.com/en-us/library/aa140319(v=office.10).aspx

Это требования конторы из которой берутся данные для проверки: ТФОМС.
...
Рейтинг: 0 / 0
08.10.2011, 09:53
    #37473836
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
nickstarnewЭто требования конторы из которой берутся данные для проверки: ТФОМС.
ты видимо не понял (даа и я, наверное, мутно как-то сказал)

разумеется, что сервис работает по протоколу SOAP,
но если, для передачи, сервис использует HTTP (что - наверняка),
то необязательно заморачиватся с MS SOAP Toolkit, можно работать через HTTP напрямую через MSXML2.XMLHTTP

зы
а если это 1С-ский веб-сервис, то, скорее всего, даже просто - неполучится с SoapClient
я, на прошлой неделе, день "проигрался" с этим, пока нашел - http://forum.mista.ru/topic.php?id=331487

в итоге сделал как говорю - и "все счастливы"
...
Рейтинг: 0 / 0
10.10.2011, 09:55
    #37475063
nickstarnew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
qwerty112nickstarnewЭто требования конторы из которой берутся данные для проверки: ТФОМС.
ты видимо не понял (даа и я, наверное, мутно как-то сказал)

разумеется, что сервис работает по протоколу SOAP,
но если, для передачи, сервис использует HTTP (что - наверняка),
то необязательно заморачиватся с MS SOAP Toolkit, можно работать через HTTP напрямую через MSXML2.XMLHTTP

зы
а если это 1С-ский веб-сервис, то, скорее всего, даже просто - неполучится с SoapClient
я, на прошлой неделе, день "проигрался" с этим, пока нашел - http://forum.mista.ru/topic.php?id=331487

в итоге сделал как говорю - и "все счастливы"

А пример кода в Access есть?
...
Рейтинг: 0 / 0
10.10.2011, 10:54
    #37475174
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
  Const sURL = "http://*****.**.***/*****/****.asmx"
  '
  Dim sEnv As String
  Dim xmlhtp As MSXML2.XMLHTTP
  Dim XMLDoc As MSXML2.DOMDocument
  Dim xmlNode As MSXML2.IXMLDOMNode 'Object '
  ' 
  sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
  sEnv = sEnv & "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:tmap=""http://**.**.**.**/*****/"">"
  sEnv = sEnv & "<soap:Header/>"
  sEnv = sEnv & "<soap:Body>"
  sEnv = sEnv & "<tmap:GetFromMAP>"
  sEnv = sEnv & "<tmap:stationfrom>" & Me.cmbRegionFrom.Value & "</tmap:stationfrom>"
  sEnv = sEnv & "<tmap:stationto>" & Me.cmbRegionTo.Value & "</tmap:stationto>"
  sEnv = sEnv & "<tmap:codeetsng>" & Me.fldCodeetsng & "</tmap:codeetsng>"
  sEnv = sEnv & "<tmap:codegng>" & Me.fldCodegng & "</tmap:codegng>"
  sEnv = sEnv & "<tmap:norm>" & Me.fldNorm & "</tmap:norm>"
  sEnv = sEnv & "<tmap:sostcode>" & Me.fldSostcode & "</tmap:sostcode>"
  sEnv = sEnv & "<tmap:datad>" & Format(Me.dtpTarifDate, "yyyy\-mm\-dd") & "</tmap:datad>"
  sEnv = sEnv & "<tmap:country>***</tmap:country>"
  sEnv = sEnv & "</tmap:GetFromMAP>"
  sEnv = sEnv & "</soap:Body>"
  sEnv = sEnv & "</soap:Envelope>"
  '
  Set xmlhtp = New MSXML2.XMLHTTP
  Set XMLDoc = New DOMDocument
  '
  With xmlhtp
    .Open "POST", sURL, False
    .setRequestHeader "Host", "*****.**.***/******/*****.asmx"
    .setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    .setRequestHeader "SOAPAction", "http://**.**.**.**/*****/GetFromMAP"
    .send sEnv
    ' 
    XMLDoc.LoadXML .responseText
  End With
  ' дальше - или запись в файл
'  XMLDoc.Save CurrentProject.path & "\WebQueryResult.xml"
  ' или разбор через DOM
'  Set xmlNode = XMLDoc.selectNodes("soap:Envelope").Item(0).CloneNode(True)
'  ...
...
Рейтинг: 0 / 0
14.06.2012, 14:28
    #37837927
nickstarnew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Попробовал получить доступ этим способом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit
' Excel VBA Function wrapper to call currency conversion Web Service on the web!
Public Function ccyConvert(rsCurrIn As String, rsCurrOut As String, ByVal vfAmtIn As Single) As Single
    Dim objSClient As MSSOAPLib30.SoapClient30      ' Remove the 30 if using an earlier version of SOAP
    Dim fResult As Single

    ' Point the SOAP API to the web service that we want to call...
    Set objSClient = New SoapClient30
    Call objSClient.mssoapinit(par_WSDLFile:="http://webcontinuum.net/webservices/ccydemo.wsdl")
    'Call objSClient.mssoapinit(par_WSDLFile:="http://www.xmlbus.com:9010/xmlbus/container/Converter/ConverterService/ConverterPort?WSDL")

  
    ' Call the web service
    fResult = objSClient.calcExcRate(rsCurrIn, rsCurrOut, vfAmtIn)
    Set objSClient = Nothing


    ccyConvert = fResult
End Function



Выдает ошибку, см. приложение
Как быть?
...
Рейтинг: 0 / 0
15.06.2012, 12:44
    #37839405
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
nickstarnew...
Как быть?
у меня, этот wsdl ( http://webcontinuum.net/webservices/ccydemo.wsdl) - вообще не доступен ...
и по-поводу MSSOAPLib30.SoapClient30 - незнаю, есть ли разница с MSSOAP.SoapClient30 (наверняка есть), ... вообщем я его не использовал, не знаю ..

вот рабочий пример работы через MSSOAP.SoapClient30
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
    Dim soapclient As Object ' MSSOAP.SoapClient30
    Dim XMLDoc As Object ' MSXML2.DOMDocument
    Dim xmlNode As Object ' MSXML2.IXMLDOMNode
    Dim xmlNodeList As Object ' MSXML2.IXMLDOMNodeList

    Dim i As Long
    Dim xml_path As String

    Set soapclient = CreateObject("MSSOAP.SoapClient30")
    Call soapclient.MSSoapInit("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL")

    soapclient.GetCursOnDateXML (Now)
    
    Set XMLDoc = CreateObject("MSXML2.DOMDocument")
    With soapclient.EnumValutes(False)
        XMLDoc.loadXML .context.XML
    End With

    xml_path = _
    "/EnumValutesResult/diffgr:diffgram/ValuteData/EnumValutes"
    '
    Set xmlNodeList = XMLDoc.documentElement.selectNodes(xml_path)
    i = 1
    For Each xmlNode In xmlNodeList
      Debug.Print i
      Debug.Print xmlNode.childNodes(0).baseName, xmlNode.childNodes(0).Text
      Debug.Print xmlNode.childNodes(1).baseName, xmlNode.childNodes(1).Text
      Debug.Print xmlNode.childNodes(2).baseName, xmlNode.childNodes(2).Text
      Debug.Print xmlNode.childNodes(3).baseName, xmlNode.childNodes(3).Text
      Debug.Print xmlNode.childNodes(4).baseName, xmlNode.childNodes(4).Text
      Debug.Print xmlNode.childNodes(5).baseName, xmlNode.childNodes(5).Text
      Debug.Print xmlNode.childNodes(6).baseName, xmlNode.childNodes(6).Text
      i = i + 1
    Next


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 1 
Vcode         R01010
Vname         Австралийский доллар
VEngname      Australian Dollar
Vnom          1
VcommonCode   R01010
VnumCode      36
VcharCode     AUD
 2 
Vcode         R01015
Vname         Австрийский шиллинг
VEngname      Austrian Shilling
Vnom          1000
VcommonCode   R01015
VnumCode      40
VcharCode     ATS
 3 
Vcode         R01020A
Vname         Азербайджанский манат
VEngname      Azerbaijan Manat
Vnom          1
VcommonCode   R01020
VnumCode      944
VcharCode     AZN
 4 
Vcode         R01035
Vname         Фунт стерлингов Соединенного королевства
VEngname      British Pound Sterling
Vnom          1
VcommonCode   R01035
VnumCode      826
VcharCode     GBP
 5 
Vcode         R01060
Vname         Армянский драм
VEngname      Armenia Dram
Vnom          1000
VcommonCode   R01060
VnumCode      51
VcharCode     AMD
....
...
Рейтинг: 0 / 0
15.06.2012, 13:46
    #37839555
nickstarnew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
qwerty112,

Спасибо, все получилось! Тот сервис действительно просто не работает. А http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSD без проблем все заработало.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
08.04.2014, 11:52
    #38608217
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
qwerty112
Добрый день!
В очередной раз обращаюсь за помощью. Данный код взят с сайта ФИАС ( http://fias.nalog.ru/WebServices/Public/DownloadService.asmx?op=GetLastDownloadFileInfo ).

GetLastDownloadFileInfo

Возвращает информацию о последней версии файлов, доступных для скачивания

Тест

Форма для тестирования доступна только для запросов от локальных компьютеров.
SOAP 1.1

В следующем примере показаны запрос и ответ SOAP 1.1. Вместо элементов-заполнителей следует подставить фактические значения.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
POST /WebServices/Public/DownloadService.asmx HTTP/1.1
Host: fias.nalog.ru
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://fias.nalog.ru/WebServices/Public/DownloadService.asmx/GetLastDownloadFileInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetLastDownloadFileInfo xmlns="http://fias.nalog.ru/WebServices/Public/DownloadService.asmx" />
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetLastDownloadFileInfoResponse xmlns="http://fias.nalog.ru/WebServices/Public/DownloadService.asmx">
      <GetLastDownloadFileInfoResult>
        <VersionId>int</VersionId>
        <TextVersion>string</TextVersion>
        <FiasCompleteDbfUrl>string</FiasCompleteDbfUrl>
        <FiasCompleteXmlUrl>string</FiasCompleteXmlUrl>
        <FiasDeltaDbfUrl>string</FiasDeltaDbfUrl>
        <FiasDeltaXmlUrl>string</FiasDeltaXmlUrl>
        <Kladr4ArjUrl>string</Kladr4ArjUrl>
        <Kladr47ZUrl>string</Kladr47ZUrl>
      </GetLastDownloadFileInfoResult>
    </GetLastDownloadFileInfoResponse>
  </soap:Body>
</soap:Envelope>



Как это можно реализовать в Access?
Понимаю, что нужно взять за основу приведенный Вами код, но у самого тяму не хватает. :(
...
Рейтинг: 0 / 0
09.04.2014, 08:27
    #38609264
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Коллеги! Может быть кроме qwerty112 может что-нибудь подсказать?
...
Рейтинг: 0 / 0
14.04.2014, 10:44
    #38613990
xax_nv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Up
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
06.12.2016, 20:28
    #39361502
style1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Здравствуйте!
Кто-нибудь работал с трекинг сервисом Почты России? https://tracking.pochta.ru/specification
Делаю по аналогии с примером www.cbr.ru, никак не могу побороть ошибку.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim soapclient As Object ' MSSOAP.SoapClient30
    Dim XMLDoc As Object ' MSXML2.DOMDocument
    Dim xmlNode As Object ' MSXML2.IXMLDOMNode
    Dim xmlNodeList As Object ' MSXML2.IXMLDOMNodeList

    Set soapclient = CreateObject("MSSOAP.SoapClient30")
    
    Call soapclient.MSSoapInit ("https://tracking.russianpost.ru/rtm34?wsdl")


На последней строке вылезает ошибка, скрин в приложении
...
Рейтинг: 0 / 0
07.12.2016, 08:56
    #39361592
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
style1,

не пробовал, но уверен, что нужно делать не по аналогии с примером cbr, а по аналогии с прилагаемыми примерами на сайте, по ссылке которую вы дали... очень прозрачен пример на жаве (например):



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
import javax.xml.soap.*;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;

public class SingleRP_SOAP {

    /*Данный код создает запрос для получения информации о
    конкретном отправлении по Идентификатору отправления (barcode).
    Ответ на запрос выводится на экран в формате xml.
    Пример запроса:
        <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
                       xmlns:oper="http://russianpost.org/operationhistory"
                       xmlns:data="http://russianpost.org/operationhistory/data"
                       xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
           <soap:Header/>
           <soap:Body>
              <oper:getOperationHistory>
                 <data:OperationHistoryRequest>
                    <data:Barcode>RA644000001RU</data:Barcode>
                    <data:MessageType>0</data:MessageType>
                    <data:Language>RUS</data:Language>
                 </data:OperationHistoryRequest>
                 <data:AuthorizationHeader soapenv:mustUnderstand="1">
                    <data:login>myLogin</data:login>
                    <data:password>myPassword</data:password>
                 </data:AuthorizationHeader>
              </oper:getOperationHistory>
           </soap:Body>
        </soap:Envelope>
    */

    public static void main(String args[]) throws Exception {

        //Cоздаем соединение
        SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection connection = soapConnFactory.createConnection();
        String url = "https://tracking.russianpost.ru/rtm34";

        //Cоздаем сообщение
        MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
        SOAPMessage message = messageFactory.createMessage();

        //Создаем объекты, представляющие различные компоненты сообщения
        SOAPPart soapPart =     message.getSOAPPart();
        SOAPEnvelope envelope = soapPart.getEnvelope();
        SOAPBody body =         envelope.getBody();
        envelope.addNamespaceDeclaration("soap","http://www.w3.org/2003/05/soap-envelope");
        envelope.addNamespaceDeclaration("oper","http://russianpost.org/operationhistory");
        envelope.addNamespaceDeclaration("data","http://russianpost.org/operationhistory/data");
        envelope.addNamespaceDeclaration("soapenv","http://schemas.xmlsoap.org/soap/envelope/");
        SOAPElement operElement = body.addChildElement("getOperationHistory", "oper");
        SOAPElement dataElement = operElement.addChildElement("OperationHistoryRequest","data");
        SOAPElement barcode = dataElement.addChildElement("Barcode","data");
        SOAPElement messageType = dataElement.addChildElement("MessageType","data");
        SOAPElement language = dataElement.addChildElement("Language","data");
        SOAPElement dataAuth = operElement.addChildElement("AuthorizationHeader","data");
        SOAPFactory sf = SOAPFactory.newInstance();
        Name must = sf.createName("mustUnderstand","soapenv","http://schemas.xmlsoap.org/soap/envelope/");
        dataAuth.addAttribute(must,"1");
        SOAPElement login = dataAuth.addChildElement("login", "data");
        SOAPElement password = dataAuth.addChildElement("password","data");

        //Заполняем значения
        barcode.addTextNode("RA644000001RU");
        messageType.addTextNode("0");
        language.addTextNode("RUS");
        login.addTextNode("myLogin");
        password.addTextNode("myPassword");

        //Сохранение сообщения
        message.saveChanges();

        //Отправляем запрос и выводим ответ на экран
        SOAPMessage soapResponse = connection.call(message,url);
        Source sourceContent = soapResponse.getSOAPPart().getContent();
        Transformer t= TransformerFactory.newInstance().newTransformer();
        t.setOutputProperty(OutputKeys.METHOD, "xml");
        t.setOutputProperty(OutputKeys.INDENT, "yes");
        StreamResult result = new StreamResult(System.out);
        t.transform(sourceContent, result);

        //Закрываем соединение
        connection.close();
    }


}


...
Рейтинг: 0 / 0
07.12.2016, 20:22
    #39362133
style1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
vmag,
не владею java
...
Рейтинг: 0 / 0
07.12.2016, 20:57
    #39362140
style1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
Пробую через POST запрос
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 Dim xmlhtp As Object 'MSXML2.XMLHTTP
 Set xmlhtp = CreateObject("MSXML2.XMLHTTP")

dim strAuthor 
            strAuthor = "login" & ":" & "pass"
            strAuthor = base64Encode(strAuthor)
            strAuthor = "Basic " & strAuthor

Dim sURL
sURL = "https://tracking.russianpost.ru/rtm34?wsdl"

Dim requestData
   requestData = "<?xml version=""1.0"" encoding=""utf-8""?>" _
            & "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope""" _
            & " xmlns:oper=""http://russianpost.org/operationhistory""" _
            & " xmlns:data=""http://russianpost.org/operationhistory/data""" _
            & " xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">" _
            & " <soap:Header/>" _
            & " <soap:Body>" _
            & " <oper:getOperationHistory>" _
            & " <data:OperationHistoryRequest>" _
            & " <data:Barcode>123123123</data:Barcode>" _
            & " <data:MessageType>0</data:MessageType>" _
            & " <data:Language>RUS</data:Language>" _
            & " </data:OperationHistoryRequest>" _
            & " <data:AuthorizationHeader soapenv:mustUnderstand='1'>" _
            & " <data:login>login</data:login>" _
            & " <data:password>pass</data:password>" _
            & " </data:AuthorizationHeader>" _
            & " </oper:getOperationHistory>" _
            & " </soap:Body>" _
            & " </soap:Envelope>"
  
  With xmlhtp
    .Open "POST", sURL, False
    .setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    .setRequestHeader "Authorization", strAuthor
    .setRequestHeader "soapAction", "getOperationHistory"
    .send requestData

Debug.Print .ResponseText
  End With



Что то возвращает, но не то что надо
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://russianpost.org/operationhistory" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://russianpost.org/operationhistory" name="OperationHistory12">
<types>
<xsd:schema>
<xsd:import namespace="http://www.russianpost.org/custom-duty-info/data" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=1"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://www.russianpost.org/RTM/DataExchangeESPP/Data" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=2"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=3"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://russianpost.org/sms-info/data" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=4"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://russianpost.org/operationhistory/data" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=5"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://russianpost.org/operationhistory" schemaLocation="https://tracking.russianpost.ru/rtm34?xsd=6"/>
</xsd:schema>
</types>
<message name="getOperationHistory">
<part name="parameters" element="tns:getOperationHistory"/>
</message>
<message name="getOperationHistoryResponse">
<part name="parameters" element="tns:getOperationHistoryResponse"/>
</message>
<message name="OperationHistoryFault">
<part xmlns:ns1="http://russianpost.org/operationhistory/data" name="fault" element="ns1:OperationHistoryFaultReason"/>
</message>
<message name="AuthorizationFault">
<part xmlns:ns2="http://russianpost.org/operationhistory/data" name="fault" element="ns2:AuthorizationFaultReason"/>
</message>
<message name="getLanguages">
<part name="parameters" element="tns:getLanguages"/>
</message>
<message name="getLanguagesResponse">
<part name="parameters" element="tns:getLanguagesResponse"/>
</message>
<message name="LanguageFault">
<part xmlns:ns3="http://russianpost.org/operationhistory/data" name="fault" element="ns3:LanguageFaultReason"/>
</message>
<message name="getCustomDutyEventsForMail">
<part name="parameters" element="tns:getCustomDutyEventsForMail"/>
</message>
<message name="getCustomDutyEventsForMailResponse">
<part name="parameters" element="tns:getCustomDutyEventsForMailResponse"/>
</message>
<message name="CustomDutyEventsForMailFault">
<part xmlns:ns4="http://www.russianpost.org/custom-duty-info/data" name="fault" element="ns4:CustomDutyEventsForMailFault"/>
</message>
<message name="getSmsHistory">
<part name="parameters" element="tns:getSmsHistory"/>
</message>
<message name="getSmsHistoryResponse">
<part name="parameters" element="tns:getSmsHistoryResponse"/>
</message>
<message name="SmsHistoryFault">
<part xmlns:ns5="http://russianpost.org/sms-info/data" name="fault" element="ns5:SmsHistoryFaultReason"/>
</message>
<message name="PostalOrderEventsForMail">
<part name="parameters" element="tns:PostalOrderEventsForMail"/>
</message>
<message name="PostalOrderEventsForMailResponse">
<part name="parameters" element="tns:PostalOrderEventsForMailResponse"/>
</message>
<message name="PostalOrderEventsForMailFault">
<part xmlns:ns6="http://www.russianpost.org/RTM/DataExchangeESPP/Data" name="fault" element="ns6:PostalOrderEventsForMailFault"/>
</message>
<portType name="OperationHistory12">
<operation name="getOperationHistory">
<input wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getOperationHistoryRequest" message="tns:getOperationHistory"/>
<output wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getOperationHistoryResponse" message="tns:getOperationHistoryResponse"/>
<fault message="tns:OperationHistoryFault" name="OperationHistoryFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getOperationHistory/Fault/OperationHistoryFault"/>
<fault message="tns:AuthorizationFault" name="AuthorizationFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getOperationHistory/Fault/AuthorizationFault"/>
</operation>
<operation name="getLanguages">
<input wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getLanguagesRequest" message="tns:getLanguages"/>
<output wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getLanguagesResponse" message="tns:getLanguagesResponse"/>
<fault message="tns:OperationHistoryFault" name="OperationHistoryFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getLanguages/Fault/OperationHistoryFault"/>
<fault message="tns:AuthorizationFault" name="AuthorizationFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getLanguages/Fault/AuthorizationFault"/>
<fault message="tns:LanguageFault" name="LanguageFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getLanguages/Fault/LanguageFault"/>
</operation>
<operation name="getCustomDutyEventsForMail">
<input wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getCustomDutyEventsForMailRequest" message="tns:getCustomDutyEventsForMail"/>
<output wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getCustomDutyEventsForMailResponse" message="tns:getCustomDutyEventsForMailResponse"/>
<fault message="tns:CustomDutyEventsForMailFault" name="CustomDutyEventsForMailFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getCustomDutyEventsForMail/Fault/CustomDutyEventsForMailFault"/>
<fault message="tns:AuthorizationFault" name="AuthorizationFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getCustomDutyEventsForMail/Fault/AuthorizationFault"/>
<fault message="tns:LanguageFault" name="LanguageFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getCustomDutyEventsForMail/Fault/LanguageFault"/>
</operation>
<operation name="getSmsHistory">
<input wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getSmsHistoryRequest" message="tns:getSmsHistory"/>
<output wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getSmsHistoryResponse" message="tns:getSmsHistoryResponse"/>
<fault message="tns:SmsHistoryFault" name="SmsHistoryFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getSmsHistory/Fault/SmsHistoryFault"/>
<fault message="tns:AuthorizationFault" name="AuthorizationFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getSmsHistory/Fault/AuthorizationFault"/>
<fault message="tns:LanguageFault" name="LanguageFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/getSmsHistory/Fault/LanguageFault"/>
</operation>
<operation name="PostalOrderEventsForMail">
<input wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/PostalOrderEventsForMailRequest" message="tns:PostalOrderEventsForMail"/>
<output wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/PostalOrderEventsForMailResponse" message="tns:PostalOrderEventsForMailResponse"/>
<fault message="tns:PostalOrderEventsForMailFault" name="PostalOrderEventsForMailFault" wsam:Action="http://russianpost.org/operationhistory/OperationHistory12/PostalOrderEventsForMail/Fault/PostalOrderEventsForMailFault"/>
</operation>
</portType>
<binding name="OperationHistory12PortBinding" type="tns:OperationHistory12">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getOperationHistory">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
<fault name="OperationHistoryFault">
<soap12:fault name="OperationHistoryFault" use="literal"/>
</fault>
<fault name="AuthorizationFault">
<soap12:fault name="AuthorizationFault" use="literal"/>
</fault>
</operation>
<operation name="getLanguages">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
<fault name="OperationHistoryFault">
<soap12:fault name="OperationHistoryFault" use="literal"/>
</fault>
<fault name="AuthorizationFault">
<soap12:fault name="AuthorizationFault" use="literal"/>
</fault>
<fault name="LanguageFault">
<soap12:fault name="LanguageFault" use="literal"/>
</fault>
</operation>
<operation name="getCustomDutyEventsForMail">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
<fault name="CustomDutyEventsForMailFault">
<soap12:fault name="CustomDutyEventsForMailFault" use="literal"/>
</fault>
<fault name="AuthorizationFault">
<soap12:fault name="AuthorizationFault" use="literal"/>
</fault>
<fault name="LanguageFault">
<soap12:fault name="LanguageFault" use="literal"/>
</fault>
</operation>
<operation name="getSmsHistory">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
<fault name="SmsHistoryFault">
<soap12:fault name="SmsHistoryFault" use="literal"/>
</fault>
<fault name="AuthorizationFault">
<soap12:fault name="AuthorizationFault" use="literal"/>
</fault>
<fault name="LanguageFault">
<soap12:fault name="LanguageFault" use="literal"/>
</fault>
</operation>
<operation name="PostalOrderEventsForMail">
<soap12:operation soapAction=""/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
<fault name="PostalOrderEventsForMailFault">
<soap12:fault name="PostalOrderEventsForMailFault" use="literal"/>
</fault>
</operation>
</binding>
<service name="OperationHistory12">
<port name="OperationHistory12Port" binding="tns:OperationHistory12PortBinding">
<soap12:address location="https://tracking.russianpost.ru/rtm34"/>
</port>
</service>
</definitions>
...
Рейтинг: 0 / 0
07.12.2016, 22:05
    #39362161
xmlhttp,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
style1Пробую через POST запрос
URL не тот, как минимум
вот это пашет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Sub test()
  Const sURL = "https://tracking.russianpost.ru/rtm34"
  '
  Dim sEnv As String
  Dim xmlhtp As MSXML2.XMLHTTP
  Dim XMLDoc As MSXML2.DOMDocument
  '
  sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
  sEnv = sEnv & "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:oper=""http://russianpost.org/operationhistory"" xmlns:data=""http://russianpost.org/operationhistory/data"" xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">"
  sEnv = sEnv & "<soap:Header/>"
  sEnv = sEnv & "<soap:Body>"
  sEnv = sEnv & "<oper:getLanguages>"
'  sEnv = sEnv & "<data:AuthorizationHeader soapenv:mustUnderstand=""?"">"
'  sEnv = sEnv & "<data:login>?</data:login>"
'  sEnv = sEnv & "<data:password>?</data:password>"
'  sEnv = sEnv & "</data:AuthorizationHeader>"
  sEnv = sEnv & "</oper:getLanguages>"
  sEnv = sEnv & "</soap:Body>"
  sEnv = sEnv & "</soap:Envelope>"

  '
  Set xmlhtp = New MSXML2.XMLHTTP
'  Set XMLDoc = New MSXML2.DOMDocument
  '
  With xmlhtp
    .Open "POST", sURL, False
    .setRequestHeader "Host", "tracking.russianpost.ru"
    .setRequestHeader "Content-Type", "application/soap+xml;charset=UTF-8"
    .Send sEnv
    '
    Debug.Print .responseText
'    XMLDoc.loadXML .responseText
  End With
  Set xmlhtp = Nothing
End Sub


этот запрос отрабатывает даже без авторизации
остальные тоже выполняются, но возвращают хмл-ответ с "Ошибка авторизации"

остальные запросы, навсякей, подкатом

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:data1="http://www.russianpost.org/custom-duty-info/data">
   <soap:Header/>
   <soap:Body>
      <oper:getCustomDutyEventsForMail>
         <!--Optional:-->
         <data:AuthorizationHeader soapenv:mustUnderstand="?">
            <data:login>?</data:login>
            <data:password>?</data:password>
         </data:AuthorizationHeader>
         <!--Optional:-->
         <data1:CustomDutyEventsForMailInput Barcode="?" Language="?"/>
      </oper:getCustomDutyEventsForMail>
   </soap:Body>
</soap:Envelope>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body>
      <oper:getOperationHistory>
         <!--Optional:-->
         <data:OperationHistoryRequest>
            <data:Barcode>?</data:Barcode>
            <data:MessageType>?</data:MessageType>
            <!--Optional:-->
            <data:Language>RUS</data:Language>
         </data:OperationHistoryRequest>
         <!--Optional:-->
         <data:AuthorizationHeader soapenv:mustUnderstand="?">
            <data:login>?</data:login>
            <data:password>?</data:password>
         </data:AuthorizationHeader>
      </oper:getOperationHistory>
   </soap:Body>
</soap:Envelope>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:data1="http://russianpost.org/sms-info/data">
   <soap:Header/>
   <soap:Body>
      <oper:getSmsHistory>
         <!--Optional:-->
         <data:AuthorizationHeader soapenv:mustUnderstand="?">
            <data:login>?</data:login>
            <data:password>?</data:password>
         </data:AuthorizationHeader>
         <!--Optional:-->
         <data1:SmsHistoryRequest>
            <data1:Barcode>?</data1:Barcode>
            <!--Optional:-->
            <data1:Language>?</data1:Language>
         </data1:SmsHistoryRequest>
      </oper:getSmsHistory>
   </soap:Body>
</soap:Envelope>

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:oper="http://russianpost.org/operationhistory" xmlns:data="http://russianpost.org/operationhistory/data" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:data1="http://www.russianpost.org/RTM/DataExchangeESPP/Data">
   <soap:Header/>
   <soap:Body>
      <oper:PostalOrderEventsForMail>
         <!--Optional:-->
         <data:AuthorizationHeader soapenv:mustUnderstand="?">
            <data:login>?</data:login>
            <data:password>?</data:password>
         </data:AuthorizationHeader>
         <!--Optional:-->
         <data1:PostalOrderEventsForMailInput Barcode="?" Language="?"/>
      </oper:PostalOrderEventsForMail>
   </soap:Body>
</soap:Envelope>


...
Рейтинг: 0 / 0
08.12.2016, 14:06
    #39362549
style1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
xmlhttp,,

Супер!!! Работает!
Благодарю!
...
Рейтинг: 0 / 0
20.12.2016, 09:28
    #39370728
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение данных через SOAP в Access
я бы добавил ещё пару моментов:

1) Если задача усложняется корпоративными http-проксями, то уместно использовать не Dim xmlhtp As MSXML2.XMLHTTP а as MSXML2.ServerXMLHTTP60. Методы вызова теже, но есть возможность динамически программно конфигурировать настройки "через какую проксю лезть". А обычный XMLHTTP емнип умеет только настройки браузера считывать.
Столкнулись вот - часть вебсервисов нужно вызывать из инета (там еснно свой прокси №1), а другие из внутренней сети (там вебсервисы корпоратива закрыты другой проксёй №2).

dim ht as MSXML2.ServerXMLHTTP60
ht.setProxy SXH_PROXY_SET_PROXY, "proxyaddress:port", "bypassproxylist"
ht.setTimeouts 1000, 1000, 1000, 1000

2) Если вебсервис за проксёй отдаёт кривой сертификат (https-авторизация, такое например может быть при вызовах вебсервисов SAP PI/XI), то XMLHTTP.send может давать ошибку (Description : "Имя узла в сертификате недопустимо либо не соответствует" : Number : -2147012858).
А ServerXMLHTTP60 позволяет её подавить

ht.SetOption SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS, "true"

А так компонент действительно очень удобный.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Получение данных через SOAP в Access / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]