⑴ 如何使用WebServices和SOAP进行数据传输

本文向您介绍了如何使用WebServICes和SOAP(SimpleObjectACCessProtocol,简单对象反问协议)进行数据传输,并且通过讨论示例代码对在PocketPC上传输数据的方法进行了仔细分析。
在当前版本的ADOCE(V3.1)中,我们必须找到另一种处理WebService(SOAP)调用返回数据的方法。在本文中,我将同大家对一些示例代码进行探讨,看看如何使用从一个SOAP响应中返回的数据。该示例假定Recordset(记录集)按照ChrisDengler文中所介绍的Solution2封装方式进行封装。因为Chris在他的文章中已经对这种解决方案的实现方式进行了详细描述,在本文中我就不再对所需的服务器端代码多加叙述了。
一个测试客户端程序
在我们开始讨论代码之前,让我们首先了解一下使用WebServices传输数据对我们有哪些好处。在下面这个窗体中,我创建了一个简单的测试用客户端程序,该程序将两个不同的WebServices结合到了一个MicrosofteMbeddedVisualBasic应用程序之中。:
SOAP客户端测试程序示例
窗体顶部的TextBox(文本框)用来选择所需的WebService(描述)。这个URI(UniversalResourceIdentifier)是使用SOAPToolkitWizard创建的SDL(服务描述语言,ServicesDescriptionLanguage)文件。
我已经创建了第一个WebService,您可以调用这个WebService(使用顶部的“Get”按钮),这个WebService主要用于测试目的。它调用一个简单的WebService,将您提交的名和姓作为参数连接到了一个包含完整名称的字符串中。
当您输入一个已经在服务器上进行了定义的DSN(数据源名称)以及一个针对该DSN的SQL(结构化查询语言)查询,然后点击“Get”按钮时,它开始变得更有意思了。DSN和SQL作为一个参数传递给了WebService,然后以XML格式返回一个ADORecordset。数据经过分析后,填充在窗体底部的ListView控件中。
在正确对服务器进行了设置的前提下,现在,您可以方便地访问您的企业数据了。您无需任何第三方产品--甚至不使用ADOCE--即可轻松做到这一点。对此,我的一位同事说,“这实在令人惊讶!”
代码讨论
以下代码为cmdGetRecordset_Click事件的代码(当您按下窗体底部的“Get”按钮时运行):
DimlavParameters(2)AsVariant
DimlsAsString
DimlitmAsListItem
DimiAsInteger
'Setparameters
lavParameters(1)=txtDSN.Text
lavParameters(2)=txtSQL.Text
'MakeSOAPCall
ls=SOAPCall(txtURI.Text,"GetRecordset",lavParameters,chkShowPACkets=1)
'ClearandaddListViewheadings
lvwRecordset.ColumnHeaders.Clear
lvwRecordset.ColumnHeaders.Add1,,"ArtNo",700
lvwRecordset.ColumnHeaders.Add2,,"Description",1450
lvwRecordset.ColumnHeaders.Add3,,"Price",850,lvwColumnRight
'ClearandfillListViewfromXML(withRecordsetEmulation)
lvwRecordset.ListItEMS.Clear
XMLRSOpenls
DoWhileNotXMLRSEOF
Setlitm=lvwRecordset.ListItems.Add(,,XMLRS("ArticleNo"))
转载仅供参考,版权属于原作者。祝你愉快,满意请点赞哦

⑵ c#中怎么从HTTP中将数据按照jason格式传输,接收并分解

[WebMethod]
public string Project(string paramaters)
{
return paramaters;
}

实现代码
public string Post(string methodName, string jsonParas)
{
string strURL = Url + "/" + methodName;

//创建一个HTTP请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
//内容类型
request.ContentType = "application/x-www-form-urlencoded";

//设置参数,并进行URL编码
//虽然我们需要传递给服务器端的实际参数是JsonParas(格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]),
//但是需要将该字符串参数构造成键值对的形式(注:"paramaters=[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]"),
//其中键paramaters为WebService接口函数的参数名,值为经过序列化的Json数据字符串
//最后将字符串参数进行Url编码
string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);

byte[] payload;
//将Json字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//设置请求的ContentLength
request.ContentLength = payload.Length;
//发送请求,获得请求流

Stream writer;
try
{
writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
}
catch (Exception)
{
writer = null;
Console.Write("连接服务器失败!");
}
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
writer.Close();//关闭请求流

String strValue = "";//strValue为http响应所返回的字符流
HttpWebResponse response;
try
{
//获得响应流
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}

Stream s = response.GetResponseStream();

//服务器端返回的是一个XML格式的字符串,XML的Content才是我们所需要的Json数据
XmlTextReader Reader = new XmlTextReader(s);
Reader.MoveToContent();
strValue = Reader.ReadInnerXml();//取出Content中的Json数据
Reader.Close();
s.Close();

return strValue;//返回Json数据
}

⑶ 远程调用的技术有哪些

RMI
RMI是个典型的为定制的远程通信协议, 我们都知道,在single vm中,我们可以通过直接调用java object instance来实现通信,那么在远程通信时,如果也能按照这种方式当然是最好了,这种远程通信的机制成为RPC(RemoteProcere Call),RMI正是朝着这个目标而诞生的。
传输的标准格式是Java Object Stream;基于Java串行化机制将请求的Java Object信息转化为流。传输协议是Socket。

XML-RPC
XML-RPC也是一种和RMI类似的远程调用的协议,它和RMI的不同之处在于它以标准的xml格式来定义请求的信息(请求的对象、方法、参数 等),这样的好处是在跨语言通讯的时候也可以使用。所以RMI与RPC的区别之一是RPC是跨语言的。
传输的标准格式是XML,将XML转化为流,传输协议是HTTP。
Binary-RPC
Binary-RPC和XML-RPC是差不多,不同之处仅在于传输的标准格式由XML转为了二进制的格式。
传输的标准格式是二进制文件,将二进制文件转化为传输的流,传输协议是HTTP。

SOAP
SOAP(SimpleObject Access Protocol),是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议,可以认为SOAP是XML RPC的高级版,两者的原理完全相同,都是http+XML,不同的仅在于两者定义的XML规范不同,SOAP也是Webservice采用的服务调用协 议标准。

CORBA
Common Object Request BrokerArchitecture(公用对象请求代理[调度]程序体系结构),是一组用来定义“分布式对象系统”的标准,由OMG(Object Menagement Group)作为发起和标准制定单位。CORBA的目的是定义一套协议,符合这个协议的对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于 什么样的机器和操作系统。CORBA是个类似于SOA的体系架构,涵盖可选的远程通信协议,但其本身不能列入通信协议。

JMS
JMS,是实现java领域远程通信的一种手段和方法,基于JMS实现远程通信时和RPC是不同的,虽然可以做到RPC的效果,但因为不是从协议 级别定义的,因此我们不认为JMS是个RPC协议,但它确实是个远程通信协议,在其他的语言体系中也存在着类似JMS的东西,可以统一的将这类机制称为消 息机制,而消息机制呢,通常是高并发、分布式领域推荐的一种通信机制,这里的主要一个问题是容错。JMS注重的是消息交换,RMI注重的是对象方法调用,所以目的不同。JMS大多时候是异步的松耦合,RMI大多时候是同步的紧耦合。
JMS规定的传输格式是Message,将参数信息放入Message中,传输协议不限。基于JMS也是常用的实现远程异步调用的方法之一。

⑷ C# 如何使用POST方式传输一个XML文件给对方服务器接口。

将文件读取到字节流中,构造form表单Post发送给对方服务器