问题描述
要做的东西如下(图一),简单的说就是区卫生厅提供了一个WebService接口,让我们各家医院自己编写调用WebService来上传文件(实现定期自动上传,就比以前手动方便快捷)。对高手或者有这方面经验的开发者而言,这应该很容易实现吧,请指点啊!感觉很头痛我以前没接触过WebService,不知道如何写这个调用,在网上查了些资料自己按着做了个VB.Net编程实现WebService的本地服务和调用的例子成功了,看上去挺容易的,可回到现实要做的(图一)中东西,发现很多都对不上,不知道如何实现,写的程序根本连接不上,反正是一头雾水(后附自己的代码和疑问,请高手指点!!最好是vb.net或C#的)(图一)下面是自己的VB.NET工程代码(照着网上一些例子写的,估计自己写的根本不对)已经添加了Web服务引用ImportsSystem.Web.Services.ProtocolsPublicClassForm1PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickDimhAsWebReference.MySoapHeaderDimserviceAsWebReference.BasWebService=NewWebReference.BasWebServiceh=NewWebReference.MySoapHeaderh.UserID="bas1234"h.PassWord="12342816202@gxwst"service.MySoapHeaderValue=hDimresultsAsIntegerresults=service.GetBasInfo(1,"dfsfaf15515235")TextBox1.Text=CStr(results)TextBox2.Text=h.UserIDEndSubEndClass
【下面自己的疑惑】望高手们指点!!一、SOAPrequestandresponse进入WebService地址可以看到该服务的方法GetBasInfo点击GetBasInfo进去可以看到Soap请求和响应的示例如下图,里面有要填用户密码之类,可这些要怎么利用我完全不懂,这些代码要放在什么地方二、(图一)后附件的表格如何形成一个Xml格式的字符串,用于传送请稍微举个例子吧总结起来大概就是两个问题,一是怎么通过Soap身份验证,二是怎么把表格转成Xml格式的字符串来传送我想我这些问题对于各位应该很简单的,请帮帮忙!跪了……
解决方案
解决方案二:
在线等!请大家帮帮忙啊!3Q
解决方案三:
1,soap身份验证的话2,表格转成Xml格式的字符串来传送WebMethod返回值直接定义成dataset
解决方案四:
关于您的疑惑lz贴图的最后一张Soap1.1那段说明你的GetBasInfo这个webservice接受的request和返回的response的样子意思就是说你客户端用webservice的时候只要发的request是这个样子的,那webservice就能处理了然后webservice返回的response的话是这个样子的,你客户端按照这个规则来解析就行了
解决方案五:
引用3楼BrightFireOfCy的回复:
关于您的疑惑lz贴图的最后一张Soap1.1那段说明你的GetBasInfo这个webservice接受的request和返回的response的样子意思就是说你客户端用webservice的时候只要发的request是这个样子的,那webservice就能处理了然后webservice返回的response的话是这个样子的,你客户端按照这个规则来解析就行了
可是怎么发我不太明白啊能给个例子吗
解决方案六:
引用4楼simaqingtian的回复:
Quote: 引用3楼BrightFireOfCy的回复:
关于您的疑惑lz贴图的最后一张Soap1.1那段说明你的GetBasInfo这个webservice接受的request和返回的response的样子意思就是说你客户端用webservice的时候只要发的request是这个样子的,那webservice就能处理了然后webservice返回的response的话是这个样子的,你客户端按照这个规则来解析就行了可是怎么发我不太明白啊能给个例子吗
看这里:其中第一段代码的129行到133行改成下面这样就行了stringstrXml="";//lz最后一张图里面上半部分的xmlbyte[]data=requestEncoding.GetBytes(strXml.ToString());using(Streamstream=request.GetRequestStream()){stream.Write(data,0,data.Length);}
解决方案七:
引用5楼BrightFireOfCy的回复:
Quote: 引用4楼simaqingtian的回复:
Quote: 引用3楼BrightFireOfCy的回复:
关于您的疑惑lz贴图的最后一张Soap1.1那段说明你的GetBasInfo这个webservice接受的request和返回的response的样子意思就是说你客户端用webservice的时候只要发的request是这个样子的,那webservice就能处理了然后webservice返回的response的话是这个样子的,你客户端按照这个规则来解析就行了可是怎么发我不太明白啊能给个例子吗
看这里:其中第一段代码的129行到133行改成下面这样就行了stringstrXml="";//lz最后一张图里面上半部分的xmlbyte[]data=requestEncoding.GetBytes(strXml.ToString());using(Streamstream=request.GetRequestStream()){stream.Write(data,0,data.Length);}
lz最后一张图里面上半部分的xml可这个该怎么写啊,怎么把表格转成xml格式
解决方案八:
引用6楼simaqingtian的回复:
Quote: 引用5楼BrightFireOfCy的回复:
Quote: 引用4楼simaqingtian的回复:
Quote: 引用3楼BrightFireOfCy的回复:
关于您的疑惑lz贴图的最后一张Soap1.1那段说明你的GetBasInfo这个webservice接受的request和返回的response的样子意思就是说你客户端用webservice的时候只要发的request是这个样子的,那webservice就能处理了然后webservice返回的response的话是这个样子的,你客户端按照这个规则来解析就行了可是怎么发我不太明白啊能给个例子吗
看这里:其中第一段代码的129行到133行改成下面这样就行了stringstrXml="";//lz最后一张图里面上半部分的xmlbyte[]data=requestEncoding.GetBytes(strXml.ToString());using(Streamstream=request.GetRequestStream()){stream.Write(data,0,data.Length);}
lz最后一张图里面上半部分的xml可这个该怎么写啊,怎么把表格转成xml格式
酱紫写:stringstrXml="<?xmlversion="1.0"encoding="utf-8"?><soap:Envelopxmls:xsi.........."
解决方案九:
表格转成xml,偷懒的方法:表格数据放DataTable,然后DataTable放DataSet然后DataSet.writexml(文件名)
解决方案十:
引用8楼BrightFireOfCy的回复:
表格转成xml,偷懒的方法:表格数据放DataTable,然后DataTable放DataSet然后DataSet.writexml(文件名)
那我表格转成xml后怎么发送呢,官方给的函数是GetBasInfo(intTag,stringbasinfo)参数stringbasinfo这个是要发送的信息为xml字符串,怎么填
解决方案十一:
这个要问官方阿,你上论坛来问不到拉,他们怎么定的?
解决方案十二:
呃,看你第一张图啦人家不是说了,具体格式参阅附件一,二,三
解决方案十三:
引用11楼BrightFireOfCy的回复:
呃,看你第一张图啦人家不是说了,具体格式参阅附件一,二,三
是啊文件说把表格转成XML格式,然后填到参数stringbasinfo里,我不知道怎么转换啊
解决方案十四:
引用12楼simaqingtian的回复:
Quote: 引用11楼BrightFireOfCy的回复:
呃,看你第一张图啦人家不是说了,具体格式参阅附件一,二,三是啊文件说把表格转成XML格式,然后填到参数stringbasinfo里,我不知道怎么转换啊
首先你要知道转换后的xml是啥样子的才能转啊,把附件一,二,三发上来看看
解决方案十五:
引用13楼BrightFireOfCy的回复:
Quote: 引用12楼simaqingtian的回复:
Quote: 引用11楼BrightFireOfCy的回复:
呃,看你第一张图啦人家不是说了,具体格式参阅附件一,二,三是啊文件说把表格转成XML格式,然后填到参数stringbasinfo里,我不知道怎么转换啊
首先你要知道转换后的xml是啥样子的才能转啊,把附件一,二,三发上来看看
啥意思,转换后的xml是啥样子?这个我不懂啊,我都不知道怎么转,或者说我都没转过,哪知道转后是啥样子我都不明白什么叫“xml格式的字符串”好像没有附件一,图里有附件二、三
其他方案:
"<?xmlversion="1.0"encoding="utf-8"?><soap:Envelopxmls:xsi.........."---------------------这种就是“xml格式的字符串”
其他方案:
如果接口让你上传一个string类型的数据,那我猜啊,他应该会提供一个xml打开后的格式,当然字段名可以乱用,但是几个列数据肯定得告诉你的。如何他通过你传过去的(包含xml格式(数据)字符串)转化为xml文件保存到服务器;如何把这个文件转为dt或者ds入库;你需要跟提供接口给你的家伙要数据的格式,如何你自己创建一个内容为(xml里面内容)string文档就行了------serializer=Xml.newSerializer();writer=newStringWriter();serializer.setOutput(writer);serializer.startDocument("utf-8",null);serializer.startTag("","字段a");serializer.startTag("","字段b");serializer.text(值b);serializer.endTag("","字段b");------serializer.endTag("","字段a");以上为构建语法这个构建xml内容的字符串结构你需要跟给你接口的家伙讨论,如果他没给你明白,可以考虑问候他妈去---
其他方案:
添加soap验证:http://blog.csdn.net/wkjs/article/details/15620482种方式可以添加xmlwebservce的引用,方式1:直接在你的项目引用处右键添加服务引用,然后将相关地址输入进去,添加命名空间,然后就可以通过命名空间.的方式调用相关服务。方式2:wsdl命令编译相关wsdl文档(查看服务说明)或者url后面+?wsdl一次编译可以将wsdl编译成cs文件,直接引用,也可以再将cs文档编译成dll。结果你可以直接将xml解析成对象,网上实例很多
其他方案:
引用16楼gucangen的回复:
如果接口让你上传一个string类型的数据,那我猜啊,他应该会提供一个xml打开后的格式,当然字段名可以乱用,但是几个列数据肯定得告诉你的。如何他通过你传过去的(包含xml格式(数据)字符串)转化为xml文件保存到服务器;如何把这个文件转为dt或者ds入库;你需要跟提供接口给你的家伙要数据的格式,如何你自己创建一个内容为(xml里面内容)string文档就行了------serializer=Xml.newSerializer();writer=newStringWriter();serializer.setOutput(writer);serializer.startDocument("utf-8",null);serializer.startTag("","字段a");serializer.startTag("","字段b");serializer.text(值b);serializer.endTag("","字段b");------serializer.endTag("","字段a");以上为构建语法这个构建xml内容的字符串结构你需要跟给你接口的家伙讨论,如果他没给你明白,可以考虑问候他妈去---
严重同意,还有#17的kangkang08同学说的太轻巧了吧,网上例子再多,具体的通信规则服务端不描述清楚还是不行的。
其他方案:
关注0,0mark
其他方案:
简单来说,Soap验证协议其实是规范调用方的权限。举个例子,我写了一个接口,接口里面涉及到敏感的数据或更新操作。因为接口是对外是公开的,所以任何人都可以使用这个接口。说得严重点这个显然对数据库服务器是致命的,极容易被黑客攻击。所以Soap验证协议可以在调用方调用接口的时候,要求输入指定的验证规则数据来验证这个用户是否是合法的调用方。在调用方调用接口的时候,这个验证的数据会传递到接口的服务器,服务器根据已经拟定好的验证规则来验证这个用户。如果合法则调用方可以正常调用,否则服务器会拒绝服务。
其他方案:
完了,卫计委给的医疗机构的文件都可以拍照公开,你可以问系统内部的专家嘛。你要在这里问也可以问如何调用ssl的webservice,涉密文件能随便拍照公开?