我正在從一個Web應用程序使用服務的桌面應用程序(使用Electron框架),爲此我使用node.js soap包進行請求和所有運作良好。簡單的SOAP客戶端,用於使用javascript或java使用Web服務
但突然間我被要求遷移桌面應用程序,使其成爲一個僅客戶端的Web應用程序。
我的問題: 我不知道如何更改節點代碼,使其在瀏覽器中工作。我對Web開發沒有多少經驗,而且我有很多疑問和問題。
我試了一下:
使用JavaScript,使用XMLHttpRequest();但我得到CORS問題
使用Browserify捆綁的代碼,但我得到fs.readFileSync(錯誤)
我的問題:
我可以一個純JavaScript肥皂請求,沒有問題 來自交叉來源? (我被告知這是不可能的,但我想 確認它)
有什麼辦法可以在瀏覽器中使用下面的代碼(與節點模塊)? (使用 工具,如browserify)
如果我必須爲這個請求做一個Java類,我會有 阻止像JavaScript一樣的跨源請求?如果不是如何,我應該怎麼做?
如果可能的話,我想的代碼示例或體系結構應該如何
域的應用程序在Tomcat的一個解釋:
http://localhost:8080/AppWithWebServices/ws/core.wsdl - > Web服務消費 http://localhost:8080/clientApp/soapRequest.js - - >向網絡服務請求文件
代碼從我的桌面應用程序與soap請求(soapRequest。 JS):
var soap = require('soap');
var request = require('request');
const {ipcRenderer} = require('electron');
window.ipc = ipcRenderer;
Submit = function(){
var user = document.getElementById("username").value;
var passw = document.getElementById("password").value;
//Class with the wsdl url and the header and body for the request
var auth = new authentication(user,passw);
soap.createClient(auth.getWsdlURL(), function(err, soapClient){
if (err){
console.log("error en creacion cliente Soap");
}
//The soap request needs a security header with user and password
//to be able to consume the web services
soapClient.addSoapHeader(auth.getSoapHeader());
soapClient.ServiceToConsume(auth.soapRequestBody(), function(err, result) {
if (!err){
//Redirect to Home.html
ipc.send('redirectHome', user, result);
}
else{
document.getElementById("login").innerHTML = "El nombre de usuario o contraseña es incorrecto";
}
});
});
};