2010-05-08 39 views
1

我與JBoss的Web服務擺弄周圍,我已經創建了以下內容:調用和消費從JavaScript(AJAX)一個JBoss Web服務

http://127.0.0.1:8080/IM/TestService?wsdl 

現在我需要從該Web服務訪問Web方法JavaScript的。

說我有一個名爲foo的網絡方法TestService,我該如何做一個ajax調用它?

我試圖通過http://127.0.0.1:8080/IM/TestService/foo訪問方法,但我得到一個HTTP狀態404

+0

您是否嘗試過使用訪問或了SoapUI捲曲或Firefox的插件海報服務器?如果你不能連接它們,那麼你已經配置好了JBOSS。 – 2010-05-08 15:23:51

回答

0

我寫了下面的JavaScript,這將允許我這樣稱呼從JBoss Web服務的Web方法。

依賴


var WS = function (url, ns, nsName) { 
    return function (method, parameters, callback) { 
     var i, j, para, soapBody = new SOAPObject(method), sr, response; 
     soapBody.ns = { 
      name: nsName, 
      uri: ns 
     }; 
     if (typeof parameters === "function") { 
      callback = parameters; 
     } else if (parameters && parameters.length) { 
      for (i = 0, j = parameters.length; i < j; ++i) { 
       para = parameters[i]; 
       soapBody.appendChild(new SOAPObject(para.name)).val(para.value); 
      } 
     } 
     sr = new SOAPRequest(method, soapBody); 
     SOAPClient.Proxy = url; 
     SOAPClient.SendRequest(sr, function (r) { 
      response = r.Body[0][method + "Response"][0]["return"][0]["Text"]; 
      if (callback) { 
       callback.call(sr, response); 
      } 
     }); 
    } 
}; 

使用

var ws = WS("http://127.0.0.1:8080/IM/TestService", "http://wservices/", "ns2"); 

ws("foo", [{name: "name", value:"dreas"}], function (r) { 
    console.log(r); 
}); 

免責聲明:這在很大程度上仍然是未經檢驗的,所以它仍然可以炸燬電腦