Mam usługa WWW WCF i JavaScript klient, który łączy się z tej usługi za pośrednictwem AJAX przy użyciu protokołu SOAP 1.2. Co chcę zrobić, to przekazać pewien parametr, aby powiadomić wywołanie SOAP AJAX do używać tylko jednego proxy tak samo jak robię to w kliencie testowym WCF, odznaczając "Uruchom nowy serwer proxy". Jak używać jednego pełnomocnika w javascript AJAX używając mydła takie same jak WCF test Klienta używać
A to moja SOAP AJAX wywołanie:
DoSoapAjax: function (soapMethodName, data, successHandler, errorHandler, isAsync, currentInstance) {
var service = this;
var soapResult = soapMethodName + "Result";
var soap12WithWsHttpBindRequest ='<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">' +
'<s:Header>' +
'<a:Action s:mustUnderstand="1">' + this.serviceContractNamespace + '/' + this.interfaceName + '/' + soapMethodName + '</a:Action>' +
'<a:MessageID>urn:uuid:605ea0c6-d09b-46bf-b61d-e61b377a135b</a:MessageID>' +
'<a:ReplyTo>' +
'<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>' +
'</a:ReplyTo>' +
'<a:To s:mustUnderstand="1">' + this.tenantAdminService + '</a:To>' +
'</s:Header>' +
'<s:Body>';
if (data == emptyString)
{
soap12WithWsHttpBindRequest +=
'<' + soapMethodName + ' xmlns="' + this.serviceContractNamespace + '" />';
}
else
{
soap12WithWsHttpBindRequest +=
'<' + soapMethodName + ' xmlns="' + this.serviceContractNamespace + '">' +
data +
'</' + soapMethodName + '>';
}
soap12WithWsHttpBindRequest +=
'</s:Body>' +
'</s:Envelope>';
// in order for ajax to work on jQuery 1.8.2 we need to enable the following.
// found this answer on the link : http://stackoverflow.com/questions/9160123/no-transport-error-w-jquery-ajax-call-in-ie
$.support.cors = true;
// variable to save successData
var responseData = null;
// SOAP 1.2 query
var response = $.ajax({
type: "POST",
url: this.tenantAdminService,
data: soap12WithWsHttpBindRequest,
contentType: "application/soap+xml",
dataType: "xml",
processData: false,
async: isAsync,
success: function (data, status, xmlHttpRequest) {
responseData = data;
// inserting all data results into dictionary
var responseResults = {};
// delegating success function
if (successHandler != null)
{
responseResults = service.ParseResponse(soapMethodName, data);
successHandler(responseResults, currentInstance);
}
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
if (errorHandler != null)
{
errorHandler(xmlHttpRequest, textStatus, errorThrown, currentInstance);
}
else if (!isAsync)
{
alert("Error : " + errorThrown);
alert("Error Description : " + xmlHttpRequest.responseText);
}
return;
}
});
if (!isAsync)
{
return service.ParseResponse(soapMethodName, response.responseXML);
}
}
Czy jest to usługa wysyłana na własny serwer lub do usługi SOAP innej firmy? Zastanawiam się, ze względu na problemy z witryny krzyżowej, jeśli klient rzeczywiście wysłać xml za pośrednictwem tej funkcji do strony zewnętrznej SOAP. Uważam, że większość przeglądarek nie zezwala na publikowanie xml na stronie trzeciej bezpośrednio przez js ze swojej pierwotnej strony internetowej. Z twojego ekranu wcf, biorę to jest wewnętrzne. Co masz na myśli przez proxy, a następnie za klienta przeglądarki? – williambq
@williambq Dzięki za komentarz. To jest mój własny serwer.nie jest stroną trzecią. – liorafar
Więc, myślę, że próbujesz uzyskać proxy singleton w miejscu? Więc każde żądanie tworzy nową instancję proxy po wywołaniu? – williambq