Имя: Пароль:
1C
 
Обращение к веб-сервису 1С
, ,
0 fatal_error
 
28.04.15
06:28
Добрый день. Есть веб-сервис 1С. Как обратиться к нему, если веб-сервис и html страница, из которой обращаюсь к сервису, находятся на разных серверах?
1 Стальная Крыса
 
28.04.15
06:35
шутка такая ?
web-серверу не все ли равно от куда к нему обращаются ?
2 fatal_error
 
28.04.15
06:43
да нет, не шутка.
когда веб-сервис 1С и html страница из которой обращаюсь находятся на одном сервере - то все в порядке.
3 rphosts
 
28.04.15
06:44
(2)пинг до компа с вебсервисом есть?

если с того компа с которого обращаешься к вебвервису в строке УРЛ браузера указать путь до вебсервиса что-то видно?
4 fatal_error
 
28.04.15
06:47
(3) да, когда вбиваю путь до сервиса, выходит wsdl
5 fatal_error
 
28.04.15
06:53
вот код обращения

function hello()
{
    getBrowser();
    xmlhttp = getXmlHttp();
    xmlhttp.open('POST', 'http://тут-ip-сервера/webservices/ws/ws1.1cws', true);
    xmlhttp.onreadystatechange = function() {OnReadyStateHello(xmlhttp)}
    xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?>' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">; <soap:Header/>' +
        '<soap:Body> <m:hello xmlns:m="namespace.kz"/> </soap:Body>' +
        '</soap:Envelope>');
}

function OnReadyStateHello(xmlhttp)
{
    if (xmlhttp.readyState == 4) {
        if(xmlhttp.status != 200) {
            alert("Запрос завершился неудачно. Ответ сервера: " + xmlhttp.responseText)
        }
        else{
            var DOM = xmlhttp.responseXML.getElementsByTagName(IE("return"))[0]
            var response = DOM.childNodes[0].data
            document.getElementById("ОтветСервера").appendChild(document.createTextNode(response))
        }
    }
}
6 sda553
 
28.04.15
06:54
(4) и на какой строке с какой ошибкой есть проблема?
7 fatal_error
 
28.04.15
06:55
if(xmlhttp.status != 200) - вот тут статус 0
8 sda553
 
28.04.15
06:56
(5) Хоспадя, это javascript же. Скриптом xmlhttp можно обращаться к данным только своего сайта на котором работает скрипт. Чужие сайты запрашивать этой xmlhttp нелзя. Это основной принцип аякса.
Тебе надо из php запрос делать
9 rphosts
 
28.04.15
06:57
со стороны 1С не требуется авторизации?
10 fatal_error
 
28.04.15
06:59
(8) только php и все?
(9) требуется, но это не проблема, появляется окошко логина, пароля и после ввода веб сервис работает нормально
11 sda553
 
28.04.15
07:02
(10) нет, еще можешь скрипт с этой парой функций выложить на том же сайте где сервис. А на этом сайте просто указать адрес фалй скрипта js.
Главное, чтобы js с функцией xmlhttp и сайт который эта функция запрашивает был один
12 fatal_error
 
28.04.15
07:04
спасибо, буду делать
13 Art igloo
 
28.04.15
08:38
(8) Есть же обходные пути, CORS, jsonp.
Причем тут php, а если у меня сайт на Ruby как тут PHP поможет..
14 Nikoss
 
28.04.15
09:15
(13), есть пример?
15 Art igloo
 
28.04.15
09:22
16 sda553
 
28.04.15
09:34
(13) "на php" означало "на сервере", ничего не имею против руби
(15) я в курсе, что такое jsonp но я не понимаю, как при его помощи я могу реквестить любоя сайт с аякс-сервисом, если тем сайтом я не управляю
17 Stim
 
28.04.15
09:43
используй soap
18 Art igloo
 
28.04.15
09:58
(16) Я думал что автор управляет, просто обращается к сервису с другого домена. Если нет, тогда да, только запрос с сервер сайд PHP, Ruby, и т.д.