首页 新闻 赞助 找找看

关于动态调用webserivce的问题。

0
悬赏园豆:30 [已关闭问题] 关闭于 2010-12-22 12:12

小弟最近在从事智能设备软件的开发,在数据采集器上运行,通过调用webserivce达到效果。 但是webserivce要求能够动态的。也就是说可以自己配置webserivce(当然是在正确的前提下)。我先前是直接将webserivce引用到项目中的。但是要动态的话这样就不可以了。网上有说用WebClient 但是 我的开发环境里根本就引用不进来。请各位大侠指教!

问题补充: 要是感觉分少了 可以提。只要有 一定加! IniFileAction NewIni = new IniFileAction(filename); string url = NewIni.IniReadValue("ClientSet", "RemoteServer"); string username = superclass.JieMi(NewIni.IniReadValue("ClientSet", "LoginServerUser")); string password = superclass.JieMi(NewIni.IniReadValue("ClientSet", "LoginServerPass")); string strId = username; string strPassword = password; Stream stream1 = null; Encoding encoding = Encoding.GetEncoding("gb2312"); HttpWebRequest myRequest = null; string postData = "username=" + strId; postData += ("&password=" + strPassword); byte[] data = encoding.GetBytes(postData); //byte[] data = new byte[postData.Length]; myRequest = (HttpWebRequest)WebRequest.Create("http://192.168.0.2:86/SHRemoteShutdownWebSerivce/Service.asmx?op=shutdown"); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded; charset=gb2312"; myRequest.ContentLength = data.Length; stream1= myRequest.GetRequestStream(); // Send the data. stream1.Write(data, 0, data.Length); stream1.Close(); HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse(); Stream stream2 = response.GetResponseStream(); StreamReader reader = new StreamReader(stream2,encoding); string str = reader.ReadToEnd();
後浪的主页 後浪 | 小虾三级 | 园豆:830
提问于:2010-12-15 19:50
< >
分享
所有回答(2)
0

智能设备里可以用httpwebrequest发送请求.

I,Robot | 园豆:9783 (大侠五级) | 2010-12-15 20:59
这样得到的是个html网页哦 我要的是直接执行那个webserivce中的方法!
支持(0) 反对(0) 後浪 | 园豆:830 (小虾三级) | 2010-12-16 09:15
@後浪:一样的,httpwebrequest也能构造post请求,然后在http head中添加soapaction:your_ws_name,在request stream中写入soap格式的请求内容.
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-12-16 09:18
@後浪:你可以先在PC上打开的的webservice地址,查看对应的方法需要提交些什么数据,然后在智能设备里把这些数据拼起来用httpwebrequest发送到服务器就可以了.
支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2010-12-16 13:26
0

WS是基于SOAP协议的。这个其实也无关,只要解析出WS的入口地址,然后根据规则调用就可以了。这个我们是动态的配置服务器的IP,然后根据固定的WS接口就能动态的配置出该处理接口了。。。

 

首先你要搞清楚WS的调用地址和调用方法,这个你可以在网页中访问该WS地址,然后可以调试该接口,进而在程序中调试看看返回值是否正确就行了。。。或者你也可以用AJAX来调用也可以的。。。。

lzhdim | 园豆:637 (小虾三级) | 2010-12-16 15:41
地址和方法以及参数是知道的。webserivce就是我自写的 只是webserivce的地址要求可以自己配置,因为webserivce可能放到其他的服务器上。所以要求读写ce上配置的服务器地址,根据这个地址去找到iis上的webserivce。 我之前是直接引用到项目中来的,通过实例化的方式去调用的。但是这样那个url就固定了。 虽然可以将url设置为动态的。但是在重新指定url后如果先前的iis被删或被停掉以后就找不到了,也会报无法远程连接到服务器的错误。 我到网上找到用webClient的方式动态调用。但是在智能设备开发里面根本就没有这个东东。小弟迷茫已久 望大侠指点迷津。最好能具体一点。
支持(0) 反对(0) 後浪 | 园豆:830 (小虾三级) | 2010-12-17 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册