当前位置: 首页 > news >正文

梅州网站建设求职简历网站开发开发小游戏吗

梅州网站建设求职简历,网站开发开发小游戏吗,《网站开发实例》pdf下载,网页制作费用大概多少在实际的应用中#xff0c;不仅需要使用WebService来传递简单类型的数据#xff0c;有时也需要传递更复杂的数据#xff0c;这些数据可以被称为复合类型的数据。数组与类#xff08;接口#xff09;是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返…在实际的应用中不仅需要使用WebService来传递简单类型的数据有时也需要传递更复杂的数据这些数据可以被称为复合类型的数据。数组与类接口是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类接口。但要注意在定义数组类型时只能使用一维数组如果想传递多维数组可以使用分隔符进行分隔如下面的代码所示 String[] strArray new String[]{ 自行车,飞机,火箭,中国,美国,德国, 超人,蜘蛛侠,钢铁侠 } ; 上面的代码可以看作是一个3*3的二维数组。 在传递类的对象实例时除了直接将数组类型声明成相应的类或接口也可以将对象实例进行序列化也就是说将一个对象实例转换成字节数组进行传递然后接收方再进行反序列化还原这个对象实例。 下面的示例代码演示了如何传递数组与类接口类型的数据并演示如何使用字节数组上传图像。本示例的客户端代码使用Java和C#编写。要完成这个例子需要如下几步 一、实现服务端代码 ComplexTypeService是一个WebService类该类的代码如下 import java.io.FileOutputStream;import data.DataForm;public class ComplexTypeService{    //  上传图像imageByte参数表示上传图像文件的字节    //  length参数表示图像文件的字节长度该参数值可能小于imageByte的数组长度    public boolean uploadImageWithByte(byte[] imageByte, int length)    {        FileOutputStream fos  null;        try        {            //  将上传的图像保存在D盘的test1.jpg文件中            fos  new FileOutputStream(d:\\test1.jpg);            //  开始写入图像文件的字节            fos.write(imageByte, 0, length);            fos.close();        }        catch (Exception e)        {            return false;        }        finally        {            if (fos ! null)            {                try                {                    fos.close();                }                catch (Exception e)                {                }            }        }        return true;    }    //  返回一维字符串数组    public String[] getArray()    {        String[] strArray  new String[]{ 自行车, 飞机, 火箭 };        return strArray;    }     //  返回二维字符串数组    public String[] getMDArray()    {        String[] strArray  new String[]{ 自行车,飞机,火箭,中国,美国,德国, 超人,蜘蛛侠,钢铁侠 } ;        return strArray;    }    //  返回DataForm类的对象实例    public DataForm getDataForm()    {        return new DataForm();    }    //  将DataForm类的对象实例序列化并返回序列化后的字节数组    public byte[] getDataFormBytes() throws Exception     {        java.io.ByteArrayOutputStream baos  new java.io.ByteArrayOutputStream();        java.io.ObjectOutputStream oos  new java.io.ObjectOutputStream(baos);        oos.writeObject(new DataForm());                return baos.toByteArray();    }    } 二、实现DataForm类 DataForm是要返回的对象实例所对应的类该类的实现代码如下 package data;public class DataForm implements java.io.Serializable{    private String name  bill;    private int age  20;    public String getName()    {        return name;    }    public void setName(String name)    {        this.name  name;    }    public int getAge()    {        return age;    }    public void setAge(int age)    {        this.age  age;    }} 三、发布WebService 由于本示例的WebService类使用了一个Java类DataForm类因此在发布WebService之前需要先将DataForm.class文件复制到Tomcat安装目录\webapps\axis2\WEB-INF\classes\data目录中然后将ComplexTypeService.class文件复制到Tomcat安装目录\webapps\axis2\WEB-INF\pojo目录中最后启动Tomcat如果Tomcat已经启动由于增加了一个DataForm类因此需要重新启动Tomcat。 四、使用Java编写调用WebService的客户端代码 在客户端仍然使用了RPC的调用方式代码如下 package client;import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;public class ComplexTypeRPCClient{    public static void main(String[] args) throws Exception    {        RPCServiceClient serviceClient  new RPCServiceClient();        Options options  serviceClient.getOptions();        EndpointReference targetEPR  new EndpointReference(                http://localhost:8080/axis2/services/ComplexTypeService);        options.setTo(targetEPR);        // 下面的代码调用uploadImageWithByte方法上传图像文件        /        // 打开图像文件确定图像文件的大小        java.io.File file  new java.io.File(f:\\images.jpg);        java.io.FileInputStream fis  new java.io.FileInputStream(f:\\images.jpg);        // 创建保存要上传的图像文件内容的字节数组        byte[] buffer  new byte[(int) file.length()];        // 将图像文件的内容读取buffer数组中        int n  fis.read(buffer);        System.out.println(文件长度  file.length());        Object[] opAddEntryArgs  new Object[]{ buffer, n };        Class[] classes  new Class[]{ Boolean.class };        QName opAddEntry  new QName(http://ws.apache.org/axis2,uploadImageWithByte);        fis.close();        // 开始上传图像文件并输出uploadImageWithByte方法的返回传        System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);        /                // 下面的代码调用了getArray方法并返回一维String数组        /          opAddEntry  new QName(http://ws.apache.org/axis2, getArray);        String[] strArray  (String[]) serviceClient.invokeBlocking(opAddEntry,                             new Object[]{}, new Class[]{String[].class })[0];        for (String s : strArray)            System.out.print(s    );        System.out.println();        /                 // 下面的代码调用了getMDArray方法并返回一维String数组        /          opAddEntry  new QName(http://ws.apache.org/axis2, getMDArray);        strArray  (String[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{},                                                           new Class[]{String[].class})[0];        for (String s : strArray)        {            String[] array  s.split(,);            for(String ss: array)                System.out.print(  ss   );            System.out.println();        }        System.out.println();        /         // 下面的代码调用了getDataForm方法并返回DataForm对象实例        /          opAddEntry  new QName(http://ws.apache.org/axis2, getDataForm);        data.DataForm df  (data.DataForm) serviceClient.invokeBlocking(opAddEntry, new Object[]{},                                                                  new Class[]{data.DataForm.class})[0];        System.out.println(df.getAge());        /                // 下面的代码调用了getDataFormBytes方法并返回字节数组最后将返回的字节数组反序列化后转换成DataForm对象实例        /                  opAddEntry  new QName(http://ws.apache.org/axis2, getDataFormBytes);        buffer  (byte[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{}, new Class[]{byte[].class})[0];        java.io.ObjectInputStream ois  new java.io.ObjectInputStream(                new java.io.ByteArrayInputStream(buffer));        df  (data.DataForm) ois.readObject();        System.out.println(df.getName());        //    }} 运行上面的程序将输出如下的内容 文件长度3617true自行车 飞机 火箭 自行车 飞机 火箭中国 美国 德国超人 蜘蛛侠 钢铁侠20bill 五、使用C#编写调用WebService的客户端代码 在Visual Studio中使用WebService就简单得多。假设引用WebService时的引用名为complexType则下面的代码调用了uploadImageWithByte方法来上传图像文件。在Visual Studio引用WebService时uploadImageWithByte方法多了两个out参数在使用时要注意。 complexType.ComplexTypeService cts  new WSC.complexType.ComplexTypeService();System.IO.FileStream fs  new System.IO.FileStream(f:\images.jpg, System.IO.FileMode.Open);byte[] buffer  new byte[fs.Length];fs.Read(buffer, 0, (int)fs.Length);bool r;bool rs;cts.uploadImageWithByte( buffer, (int)fs.Length, true, out r, out rs); 在获得二维数组时可以将数据加载到DataGridView或其他类似的控件中代码如下 String[] strArray  cts.getMDArray();for (int i  0; i  strArray.Length; i){    //  用正则表达式将带分隔符的字符串转换成String数组    String[] columns  strArray[i].Split(,);    //  如果DataGridView的表头不存在向DataGridView控件添加三个带表头的列    if (dataGridView1.Columns.Count  0)        for (int j  0; j  columns.Length; j)            dataGridView1.Columns.Add(column  (j  1).ToString(), 列  (j  1).ToString());    //  添加行    dataGridView1.Rows.Add(1);    for(int j  0; j  columns.Length; j)    {        dataGridView1.Rows[i].Cells[j].Value  columns[j];                           }                } 向DataGridView控件添加数据后的效果如图1所示。图1  对于其他的WebService方法的调用都非常简单读者可以自己做这个实验。 要注意的是由于.net和java序列化和反序列化的差异通过序列化的方式传递对象实例只使用于客户端与服务端为同一种语言或技术的情况如客户端和服务端都使用Java来编写。    如果读者要上传大文件应尽量使用FTP的方式来传递而只通过WebService方法来传递文件名等信息。这样有助于提高传输效率。
http://www.huolong8.cn/news/127806/

相关文章:

  • 网站版式在国外视频网站做中国美食
  • 高级网站开发培训自己做的视频网站如何赚钱
  • 陕西交通建设集团网站贴吧wordpress文章上下一篇 图片
  • 随州做网站公司网站建设开题报告论述
  • 美橙网站开发wordpress带会员中心模板
  • 长春做网站优化网站如何优化
  • 定制网站成本多少网页设计教程详细步骤ppt
  • 企业发展历程网站wordpress系列教程
  • 网站seo描述wordpress进不去仪表盘
  • 重庆网站设计免费看视频的软件是什么
  • 网站开发转移合同网站模版上线需要什么
  • 响应式网站效果图做多大的青岛网站建设运营
  • 上海做网站哪家便宜芙蓉建设官方网站
  • 长沙网站建设及推广公司智慧团建网站密码忘了
  • 阿里巴巴外贸学院北京网站优化
  • 海口网站建设美丽17模板网站
  • 什么叫商城网站吉林省建设工程安管人员管理系统
  • 下沙网站建设网站开发人才培养目标
  • 免费的开源网站企业网站建设研究目的意义
  • 高效网站建设公司从源码安装wordpress
  • 第二章 营销型网站建设测验成全视频免费观看
  • 做一个专业的网站多少钱做网站seo优化
  • seo整站排名兰州酒店网站建设
  • 门户网站时代现在网站一般都是什么语言做的
  • 响应试企业网站两人合伙做网站但不准备开公司
  • 企业网站的建设公司价格南充房产网最新房价
  • 网站怎么建立视频洛阳做网站公司电话
  • 养殖网站模版多个链接的网站怎么做的
  • php网站开发技术与开源系统应用 实训指导书萍乡网站建设行吗
  • 徐州网站建设网站制作专做鞋子的网站