[ Pobierz całość w formacie PDF ]
assenc = senc.getAssociatedEncoding(
"http://schemas.xmlsoap.org/soap/encoding/",
false);
var scoll = assenc.schemaCollection;
var stype = scoll.getType(
"integer",
124 Rozdzia 5. Us ugi sieciowe
"http://www.w3.org/2001/XMLSchema");
p1.schemaType = stype;
p2.schemaType = stype;
soapcall.encode(
0, //warto domy lna dla protoko u SOAP 1.1
"DivideNumbers", //nazwa metody sieciowej
"http://hauser-wenz.de/AspNetAJAX/", //przestrze nazw
0, //liczba dodatkowych nag ówków
new Array( ), //dodatkowe nag ówki
2, //liczba parametrów
new Array(p1, p2) //parametry
);
soapcall.asyncInvoke(callComplete);
}
function callComplete(result, soapcall, status) {
document.getElementById("c").innerHTML =
result.body.firstChild.firstChild.firstChild.data;
}
:
=
Us ugi sieciowe w obydwu przegl darkach
Przegl d technik korzystania z us ug sieciowych z poziomu skryptu JavaScript w przegl -
darkach Internet Explorer i Mozilla zako czymy rozwi zaniem, które czy obydwie metody
na jednej stronie. W tym celu musimy przede wszystkim ustali , w jaki sposób rozpoznawa-
ny b dzie rodzaj przegl darki. Zgodnie z informacjami zamieszczonymi w rozdziale 2, naj-
korzystniejsze wydaje si sprawdzenie zestawu funkcji przegl darki, a nie ich typu. Zasada
ta zosta a wykorzystana podczas opracowywania kodu z przyk adu 5.9 (jej opis znajduje si
w rozdziale 2, w cz ci dotycz cej powo ywania obiektu XMLHttpRequest). Rozwi zanie po-
lega na utworzeniu obiektu w a ciwego dla jednej przegl darki. Je li to si uda, dalsza cz
kodu zostanie wykonana zgodnie z za o eniami. W przeciwnym przypadku wykorzystane
zostan instrukcje w a ciwe dla drugiej przegl darki. Poszczególne wywo ania zosta y za-
pisane w dwóch zagnie d onych konstrukcjach try $ catch.
Wykorzystanie us ug sieciowych z poziomu skryptu JavaScript 125
Dost p do zdalnych us ug sieciowych
w przegl darkach Mozilla
Model zabezpiecze przegl darki Mozilla umo liwia odwo ania do zdalnych us ug sieciowych.
Wykonanie skryptu wi e si jednak z wy wietleniem okna dialogowego, w którym u yt-
kownik musi zezwoli na tak operacj (rysunek 5.7). Wymagane jest w tym przypadku
uprawnienie UniversalBrowserRead, oznaczaj ce, e przegl darka mo e pobiera dane
z dowolnego serwera (w czaj c w to zarówno serwery zdalne, jak i lokalny system plików).
netscape.security.PrivilegeManager.enablePrivilege(
"UniversalBrowserRead");
Rysunek 5.7. danie zwi kszenia poziomu uprawnie w przegl darce Firefox
Domy lna konfiguracja przegl darek Mozilla i Firefox (a tak e kilku innych) powoduje na-
danie wspomnianego uprawnienia tylko w dost pie do plików lokalnych (z definicj protoko u
file://). Mechanizm ten znajduje wi c zastosowanie g ównie w aplikacjach intranetowych.
Wygl d okna dialogowego z daniem zwi kszenia poziomu uprawnie zosta pokazany na
rysunku 5.7.
Przyk ad 5.9. Wywo anie us ugi sieciowej w dowolnej z przegl darek Internet Explorer i Mozilla
MathService.htm
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
ASP.NET AJAX
function callService(f) {
document.getElementById("c").innerHTML = "";
try {
WebService.useService("MathService.asmx?WSDL", "MathService");
WebService.MathService.callService(
callComplete,
"DivideNumbers",
parseInt(f.elements["a"].value), parseInt(f.elements["b"].value));
} catch (e) {
try {
var soapcall = new SOAPCall( );
soapcall.actionURI = "http://hauser-wenz.de/AspNetAJAX/DivideNumbers";
126 Rozdzia 5. Us ugi sieciowe
soapcall.transportURI = "http://localhost:1041/AJAXEnabledWebSite1/
MathService.asmx";
var p1 = new SOAPParameter(parseInt(f.elements["a"].value), "a");
var p2 = new SOAPParameter(parseInt(f.elements["b"].value), "b");
var senc = new SOAPEncoding( );
assenc = senc.getAssociatedEncoding(
"http://schemas.xmlsoap.org/soap/encoding/",
false);
var scoll = assenc.schemaCollection;
var stype = scoll.getType(
"integer",
"http://www.w3.org/2001/XMLSchema");
p1.schemaType = stype;
p2.schemaType = stype;
soapcall.encode(
0, //warto domy lna dla protoko u SOAP 1.1
"DivideNumbers", //nazwa metody sieciowej
"http://hauser-wenz.de/AspNetAJAX/", //przestrze nazw
0, //liczba dodatkowych nag ówków
new Array( ), //dodatkowe nag ówki
2, //liczba parametrów
new Array(p1, p2) //parametry
);
soapcall.asyncInvoke(callComplete);
} catch (e) {
window.alert("Twoja przegl darka nie jest obs ugiwana.");
}
}
}
function callComplete(result, soapcall, status) {
if (result.value != null) {
document.getElementById("c").innerHTML = result.value;
} else {
document.getElementById("c").innerHTML =
result.body.firstChild.firstChild.firstChild.data;
}
}
:
=
Wykorzystanie us ug sieciowych z poziomu skryptu JavaScript 127
Czytaj dalej...
[ Pobierz całość w formacie PDF ]