webservice实现文件传输
Ⅰ 如何实现C#中的 webservice传输数据,通过访问网络利用get或是post请求方式访问。
webservice 里的方法有返回值,只要建立webservice,而地址是webservice的地址,获取方法的返回值,就是得到的参数,得到参数之后,你就自己处理。
Ⅱ C# webservice数据如何传输,包括上传和下传
参数为BYTE[] 可上传 返回值为BYTE[] 可下载.
Ⅲ webservice 传输数据有大小限制吗
我前几天在项目中刚写过webservice传递附件,局域网内尝试过2G的,都可以传输成功,包括上传和下载。
网络上没有尝试过,估计会受网速等各种因素的影响吧~
Ⅳ 讨论一下WebService传输文件
当然可以传附件了、、。。。
axis用过吧?版本1就可以
将你要传送的文件封装在DataHandler中,然后将DataHandler对象或DataHandler数组(多个文件传送的时候)作为客户端调用函数的参数(从客户端上传文件到服务器)Axis服务的返回类型(从服务器端下载文件到客户端)进行传输。
1.服务端程序:
假设传输多个文件:在服务器端将文件取出来,并将文件封装在DataHandler数组中。
代码如下:
DataHandler[] ret = new DataHandler[totalFileNum];
... ...
java.io.File myFile = new java.io.File(filePath);
if(myFile.isFile() && myFile.canRead())
{
String fname = myFile.getAbsoluteFile().getCanonicalPath();
DataHandler[0] = new DataHandler(new FileDataSource(fname));
}
... ...
return ret;
2. 客户端的访问:
代码如下:
Service service = new Service();
Call call = (Call) service.createCall();
URL myURL = new URL("http://192.168.0.26:8080/axis/servlet/AxisServlet");
call.setTargetEndpointAddress(myURL); //设定服务的主机和位置
call.setOperationName(new QName("urn:MyAttachServer","echoDir")); //设置要调用的服务的方法
QName qnameAttachment = new QName("urn:MyAttachServer","DataHandler");
call.registerTypeMapping(DataHandler.class, qnameAttachment, .class,.class); //为附件(即DataHandler类)创建序列化生成器
call.addParameter("source", XMLType.XSD_STRING ,ParameterMode.IN); //设置服务调用方法的传入参数类型
call.setReturnType(XMLType.SOAP_ARRAY); //设置调用服务方法的返回类型,由于返回的是DataHandler数组,所以设置为SOAP_ARRAY类型
javax.activation.DataHandler[] ret = (javax.activation.DataHandler[])call.invoke(new Object[]{null}); //调用方法
for (i = 0; i < ret.length; ++i)
{
DataHandler recDH = ret[i];
java.io.File receivedFile = new java.io.File(recDH.getName()); //文件生成
}
3. 服务的部署:
注意:你要在部署的时候,定义DataHandler的序列化生成器。
编写deploy.wsdd文件:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns1="urn:att_STC_Server" >
<service name="urn:att_STC_Server" provider="java:RPC" >
<parameter name="className" value="samples.att_STC.att_STC_Server"/>
<parameter name="allowedMethods" value="echoDir"/>
<typeMapping deserializer="org.apache.axis.encoding.ser."
languageSpecificType="java:javax.activation.DataHandler" qname="ns1:DataHandler"
serializer="org.apache.axis.encoding.ser."
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>
</deployment>
自己试试。
Ⅳ 如何使用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"))
转载仅供参考,版权属于原作者。祝你愉快,满意请点赞哦