Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Обращение к ASP.NET сервису из Windows Sidebar Gadget / 20 сообщений из 20, страница 1 из 1
23.09.2012, 15:02
    #37968734
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Оформил тестовый пример:
...
Рейтинг: 0 / 0
23.09.2012, 15:08
    #37968738
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Код: html
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.
<html>
<head>
    <meta charset="utf-8">
    <script type="text/javascript">
        var requestBody =
                '<?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>' +
                '<Get xmlns="http://tempuri.org/">' +
                '<UserRequest Login="test" Password="test"></UserRequest>' +
                '</Get>' +
                '</soap:Body>' +
                '</soap:Envelope>',
            requestUri = 'http://localhost:88/User.asmx';

        function doCallOtherDomain() {
            var XHR = window.XDomainRequest || window.XMLHttpRequest,
                xhr = new XHR();

            xhr.open('POST', requestUri, true);
            xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');

            // замена onreadystatechange
            xhr.onload = function () {
                document.getElementById('response').innerHTML = xhr.responseText
            };
            xhr.onerror = function () {
                alert("Error")
            };
            xhr.send(requestBody)
        }

        function callOtherDomain() {
            try {
                doCallOtherDomain()
            } catch (e) {
                alert("В этом браузере данная фича не поддерживается.")
            }
        }
    </script>
</head>
<body>
<div id="response"></div>
<input type="button" value="Нажмите для запроса к другому домену" onclick="callOtherDomain()"/>
</body>
</html>


Сервис в ответ добавляет следующий заголовок:
Код: c#
1.
Context.Response.Headers.Add( "Access-Control-Allow-Origin", "*" );


В итоге получаю сообщение "Error" :)
Кто-нибудь может подсказать как грамотно обратится из гаджета к ASP.NET сервису?
...
Рейтинг: 0 / 0
23.09.2012, 15:12
    #37968745
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Fiddler2 показывает, что вместо POST запроса отсылается сл. запрос без тела:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
OPTIONS http://localhost:88/User.asmx HTTP/1.1
Host: localhost:88
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Access-Control-Request-Headers: origin, content-type
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

и приходит ответ:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD, POST
Server: Microsoft-IIS/7.5
Public: OPTIONS, TRACE, GET, HEAD, POST
X-Powered-By: ASP.NET
Date: Sun, 23 Sep 2012 11:01:45 GMT
Content-Length: 0
...
Рейтинг: 0 / 0
23.09.2012, 15:22
    #37968755
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Как я понял так как у меня Content-Type: "text/xml; charset=utf-8", то сначала выполняется так называемый preflight request и, судя по ответу, сервер разрешает выполнить POST, но вот толко последний не выполняется, в чём проблема?
...
Рейтинг: 0 / 0
23.09.2012, 15:36
    #37968766
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
А если дернуть через сервис референс с .нет клиента, работает?
...
Рейтинг: 0 / 0
23.09.2012, 15:47
    #37968771
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
МСУ, с .net клиента через референс не дёргал, работает через HttpWebRequest:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var requestBody =
    "<?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>" +
    "<Get xmlns=\"http://tempuri.org/\">" +
    "<UserRequest Login=\"test\" Password=\"test\"></UserRequest>" +
    "</Get>" +
    "</soap:Body>" +
    "</soap:Envelope>";
var requestUri = "http://localhost:88/User.asmx";
var request = (HttpWebRequest)HttpWebRequest.Create( requestUri );

request.ContentType = "text/xml; charset=utf-8";
request.Method = "POST";
...
Рейтинг: 0 / 0
23.09.2012, 15:56
    #37968773
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Уже лучше. Теперь нужно выкинуть на свалку js-вызов xmlhttprequest и заюзать человеческий jquery и его ajax или post методы.
...
Рейтинг: 0 / 0
23.09.2012, 16:10
    #37968780
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
МСУУже лучше. Теперь нужно выкинуть на свалку js-вызов xmlhttprequest и заюзать человеческий jquery и его ajax или post методы.Таже фигня:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var requestBody =
        '<?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>' +
        '<Get xmlns="http://tempuri.org/">' +
        '<UserRequest Login="test" Password="test"></UserRequest>' +
        '</Get>' +
        '</soap:Body>' +
        '</soap:Envelope>',
    requestUri = 'http://localhost:88/User.asmx';

$.ajax({ contentType: 'text/xml; charset=utf-8', data: requestBody, dataType: 'xml', type: 'POST', url: requestUri, error: onError, success: onSuccess });


Аюсолютно такие же request и response в фидлере :)
...
Рейтинг: 0 / 0
23.09.2012, 16:12
    #37968781
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Ладно, поехал я фубол смотреть, будут у кого какие идеи - пишите. Заранее спасибо :)
...
Рейтинг: 0 / 0
23.09.2012, 16:12
    #37968782
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
skyANA, та же фигня - это работает или не работает? :)
...
Рейтинг: 0 / 0
23.09.2012, 16:13
    #37968785
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Не, ну только посмотрите на него, он видите ли на футболе, а мы тут сиди и думал, что там не так с хедерами.
...
Рейтинг: 0 / 0
23.09.2012, 16:18
    #37968787
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
МСУskyANA, та же фигня - это работает или не работает? :)Также не работает, попадает в onError.
...
Рейтинг: 0 / 0
23.09.2012, 16:19
    #37968788
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
МСУНе, ну только посмотрите на него, он видите ли на футболе, а мы тут сиди и думал, что там не так с хедерами.Дак Серж же хотел задачку :)
...
Рейтинг: 0 / 0
23.09.2012, 16:31
    #37968793
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
skyANAМСУНе, ну только посмотрите на него, он видите ли на футболе, а мы тут сиди и думал, что там не так с хедерами.Дак Серж же хотел задачку :)
Серж пусть буквари лучше читает, а не на форуме ответы программистам пишет ;)
...
Рейтинг: 0 / 0
23.09.2012, 16:33
    #37968796
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
skyANAМСУskyANA, та же фигня - это работает или не работает? :)Также не работает, попадает в onError.
Не правильно вызываешь. В data не нужно пихать весь реквест. Погугли, как правильно в ajax пропихнуть хедер. Я пока не у компа, лениво серфить.
...
Рейтинг: 0 / 0
23.09.2012, 16:58
    #37968821
st_st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Сервер должен разрешить использовние POST запроса и использование заголовка Content-type -

Код: plaintext
1.
2.
3.
4.
5.
<%
        Response.Headers.Add("Access-Control-Allow-Origin", "*");
        Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
        Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
%>
...
Рейтинг: 0 / 0
23.09.2012, 17:04
    #37968822
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
st_stСервер должен разрешить использовние POST запроса и использование заголовка Content-type -

Код: plaintext
1.
2.
3.
4.
5.
<%
        Response.Headers.Add("Access-Control-Allow-Origin", "*");
        Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
        Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
%>


В веб конфиге задается.
...
Рейтинг: 0 / 0
24.09.2012, 22:59
    #37970627
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Прописал заголовки в веб конфиге, плюс оказалось, чтобы работало в windows gadget, необходимо установить следуюшее свойство:
Код: javascript
1.
$.support.cors = true;


В итоге рабочий вариант:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function doRequest() {
    var requestBody =
            '<?xml version="1.0" encoding="utf-8"?>' +
            '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
            '<soap:Body>' +
            '<Get xmlns="http://tempuri.org/">' +
            '<UserRequest Login="test" Password="test"></UserRequest>' +
            '</Get>' +
            '</soap:Body>' +
            '</soap:Envelope>',
        requestUri = 'http://localhost:88/User.asmx';

    $.support.cors = true;
    $.ajax({ contentType: 'text/xml; charset=utf-8', data: requestBody, dataType: 'xml', type: 'POST', url: requestUri, error: onError, success: onSuccess });
}


st_st и МСУ, спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.02.2016, 15:17
    #39167677
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
Долго мучился почему гаджет не показывает результат.
$.support.cors = true помог, огромное спасибо!
...
Рейтинг: 0 / 0
10.02.2016, 23:59
    #39168135
Santa89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к ASP.NET сервису из Windows Sidebar Gadget
skyANA,

вопрос такой: в случае если гаджет вызывает веб-сервис, например каждую минуту - то в случае блокировки экрана юзера будет ли гаджет также вызывать веб-сервис каждую минуту?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Обращение к ASP.NET сервису из Windows Sidebar Gadget / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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