纯js调用webservice接口怎么调用?

擎宇 发布于 2013/04/23 16:47
阅读 34K+
收藏 5

现在我有个webservice接口的地址为:

WS:http://10.20.50.40:8080/cc_yunda/services/WebServiceHost

我现在需要用纯js调用此接口中的方法,并且需要返回数据,需要将数据代入我的一个easyui中

我没接触过js调用webservice接口,所以望大神们帮忙解决下!!

再次谢咯

加载中
0
绝天
绝天
例子代码为:
var xmlHttp
function callServer() {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;//回调函数
xmlHttp.send(null);
}
function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("zipCode").value = response;
}
}

 

绝天
绝天
回复 @擎宇 : 兄弟啊,代码已经很清楚了~~~~
擎宇
擎宇
回复 @擎宇 : 天兄,兄弟在线等待的···兄弟跪—— 求代码!!
擎宇
擎宇
回复 @绝天 : 天兄,那个是内网的,贴出来没用,你把代码拼接好,发出来,我来调试!
绝天
绝天
回复 @擎宇 : 把你的webservice地址贴出来,你上面那个不通的。替换个url而已啊~
擎宇
擎宇
回复 @绝天 : 你那个是php的,我这个是java的可以使用一样的调法么?,后面有个方法是这个sendCallcountToService 传一个参数agentid=1050 你能帮我拼一下 然后发给我么,谢谢了,我都困惑2天了
下一页
0
朱静程
朱静程

如果可以,用JQuery的$Post。

参考 http://api.jquery.com/jQuery.post/

0
肥添
肥添
组装soap格式xml,放到js的xmlhttprequest中post过去得了
擎宇
擎宇
大神,帮我看看代码,代码我出来了,请帮我改改
0
景愿
景愿
还是算了吧,就一个soap协议就有的搞了,其他后台语言都有现成的类库
0
擎宇
擎宇

哥哥们,我需要用纯js调用上面的那个webservice接口,能教教我么?我不要soap的,就纯js调用;帮帮忙啦!

小白小霸王
小白小霸王
呵呵 webservice 挑食,只吃soap,你还不给它,你是想饿死它哦
景愿
景愿
webservice走的是soap协议,你不搞这个还搞啥!
0
擎宇
擎宇

我要案列,哥哥们!

0
丁加砙
丁加砙
有点无语... 你用ajax调用那个调用webservice的方法不就得了吗,js直接调用webservice???
擎宇
擎宇
恩恩,我只需要js调用!大神,你有办法没?需要wsdl协议的
0
Sam_yi
Sam_yi
CXF 有工具可以生成JS 客户端 根据WSDL 你可以试下
擎宇
擎宇
大神,你能帮我生成下么?地址在上面,谢了!
0
擎宇
擎宇

function RequestWebService() {         
//这是我们在第一步中创建的Web服务的地址         
var URL = "http://10.20.50.80:8080/cc_yunda/services/WebServiceHost?wsdl/sendCallcountToService";        
//在这处我们拼接         
var data;         
data = '<?xml version="1.0" encoding="utf-8"?>';  
data = data + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">';        
data = data + '<soap12:Body>';   
data = data + '<HelloWorld xmlns="http://tempuri.org/" />';      
data = data + '</soap12:Body>';          
data = data + '</soap12:Envelope>';

//创建异步对象       
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");          
xmlhttp.Open("POST", URL, false);           
xmlhttp.SetRequestHeader("Content-Type", "application/soap+xml");       

xmlhttp.Send(data);         
document.getElementById("data").innerHTML = xmlhttp.responseText;      
}           


这个是我的js代码。可以说明一下,我该怎么调用该类的方法呢?还有这段js调用时,提示no SOAPAction header 我该怎么做呢?

擎宇
擎宇
回复 @绝天 : 天兄,我这个需要wsdl协议的;所以不知道怎么拼接,上面的那个例子,拼接好发出来
绝天
绝天
需要回调函数
0
肥添
肥添

要代码是吧~:

wsdl就是描述文件的地址,postDom就是soap格式xml,soap格式xml,可以用soapui 查看这个格式


if (wsdl) {
			if (user && pwd) {
				httpReq.open("POST", wsdl, true, user, pwd);
			} else {
				httpReq.open("POST", wsdl, true);
			}
			httpReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
			httpReq.setRequestHeader("SOAPAction", wsdl);
			//httpReq.setRequestHeader("Content-Type", "application/soap+xml");
			httpReq.send(postDom);
			//回调
			httpReq.onreadystatechange = function() {
				if (httpReq.readyState == 4) {// 4 = "loaded"
					if (httpReq.status == 200) {// 200 = OK
						// ...our code here...
						// alert(httpReq.responseXML);
						var rtndom = httpReq.responseXML;
						executor.initRtnView(rtndom);
					} else {
						alert(httpReq.responseText);
						alert("Problem retrieving XML data");
					}
				}
			}
		}


肥添
肥添
回复 @擎宇 : https://github.com/tian-github/JsDailyTest 这个不知道合适不,需要改改execute.js里面的soap格式xml
擎宇
擎宇
恩恩,肥哥,你代码发完整好么?我最主要的就是那个配置url不会,而你又没发出来!!在来一次,跪————求
返回顶部
顶部