Re[4]: Как из ASP вызвать метод веб-сервиса написанный в .NE
От: Nickolaz Россия  
Дата: 12.10.07 04:39
Оценка:
Здравствуйте, Neco, Вы писали:

N>SOAP ромадить не обязательно — можно просто сформировать http POST запрос, к примеру такой как я привёл. И в asp и в js это (я уверен) возможно довольно просто. Создаётся какой-то объект через CreateObject (не помню точно, но в названии присутствовали http и request), и выполняется какой-то из его методов.


N>вот для примера кусок axd, в котором вызывается веб-метод


N>
N>    catch(e) {
N>        try {
N>            xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
N>        }
N>        catch(e) {
N>        }
N>    }
N>    var setRequestHeaderMethodExists = true;
N>    try {
N>        setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
N>    }
N>    catch(e) {}
N>    var callback = new Object();
N>    callback.eventCallback = eventCallback;
N>    callback.context = context;
N>    callback.errorCallback = errorCallback;
N>    callback.async = useAsync;
N>    var callbackIndex = WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
N>    if (!useAsync) {
N>        if (__synchronousCallBackIndex != -1) {
N>            __pendingCallbacks[__synchronousCallBackIndex] = null;
N>        }
N>        __synchronousCallBackIndex = callbackIndex;
N>    }
N>    if (setRequestHeaderMethodExists) {
N>        xmlRequest.onreadystatechange = WebForm_CallbackComplete;
N>        callback.xmlRequest = xmlRequest;
N>        xmlRequest.open("POST", theForm.action, true);
N>        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
N>        xmlRequest.send(postData);
N>        return;
N>    }
N>    callback.xmlRequest = new Object();
N>    var callbackFrameID = "__CALLBACKFRAME" + callbackIndex;
N>    var xmlRequestFrame = document.frames[callbackFrameID];
N>    if (!xmlRequestFrame) {
N>        xmlRequestFrame = document.createElement("IFRAME");
N>        xmlRequestFrame.width = "1";
N>        xmlRequestFrame.height = "1";
N>        xmlRequestFrame.frameBorder = "0";
N>        xmlRequestFrame.id = callbackFrameID;
N>        xmlRequestFrame.name = callbackFrameID;
N>        xmlRequestFrame.style.position = "absolute";
N>        xmlRequestFrame.style.top = "-100px"
N>        xmlRequestFrame.style.left = "-100px";
N>        try {
N>            if (callBackFrameUrl) {
N>                xmlRequestFrame.src = callBackFrameUrl;
N>            }
N>        }
N>        catch(e) {}
N>        document.body.appendChild(xmlRequestFrame);
N>


N>как видишь, создаётся объект Microsoft.XMLHTTP. Не знаю, откуда у линуксовой мозиллы Microsoft.XMLHTTP, но наверное там это делается как-то по-другому. Вполне возможно, что у asp есть и собственные — более "нормальные" методы POST запроса.


Можно смело считать проблемой опытных пользователей — это проблема донести до неопытных свои знания в таком виде, чтобы тот их понял с первого раза. Где коменты? Из того кода, непоняток для меня куча, вследствии плохого знания JavaScript о чём я уже упоминал.
Вы писали: "И в asp и в js это (я уверен) возможно довольно просто. Создаётся какой-то объект через CreateObject (не помню точно, но в названии присутствовали http и request), и выполняется какой-то из его методов." Такой текст не несёт никакой полезной информации и считать его ответом ну никак нельзя. Я же нуб и что мне от того что это делается довольно прост и с помощью вызова какого-то метода. Мне нужен как нубу текст с поробнывми коментами по коду, где можно було бы увидеть логику всего процесса вызова веб метода и с помощью коментов увидеть как это делаетсяконкретно, вот тогда это можно сичтать полноценным отаветом и за это раздовать благодарности авторам. По коду у меня возниколо масса вопросов... для чего создаётся объект callback, что такое переменная useAsync, errorCallback, eventCallback. Что делает ф-ция WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback), что такое WebForm_CallbackComplete, что такое postData и откуда она вообще в методе send? Зчем содаётся фрэйм на форме? И что такое callBackFrameUrl? Что делается вот сдесь — document.body.appendChild(xmlRequestFrame); Как видите мне непонятен весь текст почти, кроме того, что создали шаблоны HTTP POST запросов в самом начале. Огромнейшая просьбы пишите и раскрывайте проблему от и до исходя из того принципа, что те кто будет это читать чайники с нулевыми знаниями, тогда ваши статьи и книги будут пользоваться спросом. Огромная просьба написать грамотные коменты для каждой строки кода. буду очень благодарен, да и наверно не только я но и все читающие тему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.