webservice-接口测试1(Socket通信)

WebService:web服务

技术需求分析:1、手机归属地查询 2、天气预报查询  (XML,JSON)-->公用数据,提供给第三方使用。Java,NET PHP C C++ 

手机淘宝:http方式,给服务器发送请求,获取数据

项目调用项目有哪些方式:

1:A做了页面,B做了数据逻辑层。-->A 要调用B的数据,怎么处理?

1)http://192.168.0.1:8080/project/aaa_demo.action 缺点:传输的只能是字符串,参数多则不利于维护

2)socket通信:传输层,不支持http协议

3)WebService:可以在某台电脑中调用世界上其他电脑的Java Bean

 

Socket通信:传输层协议

1、不同的语言支持Socket通信吗? ---->支持

2、不同的协议支持Socket通信吗? ---->web程序可以调用sock请求,但由于协议不同,因此在处理的时候,要过滤http协议格式。返回时还需要添加http返回格式。

3、如果参数过多---->可维护性比较低

4、Socket服务有利于推广吗?---->推广成本高

 

客户端源码:

package cn.it.ws.a;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/*
   Socket客户端,用来发送给服务端请求
 */
public class SocketClient {

    public static void main(String[] args) throws IOException {
        //从控制台接收数据
        Scanner input = new Scanner(System.in);
        //创建socket通信
        Socket sc = new Socket("127.0.0.1",9999);

        System.out.println("请输入要转化的字母:");
        String initData = input.next();
        //获取输出流,用来发送数据
        OutputStream out = sc.getOutputStream();
        out.write(initData.getBytes());
        //等待服务器端返回数据
        System.out.println("请等待服务端返回数据=====");
        //获取服务端返回的数据
        InputStream in = sc.getInputStream();
        byte[] b = new byte[1024];
        int len = in.read(b);
        System.out.println("返回的结果为:"+new String(b,0,len));
        out.close();
        in.close();
        sc.close();


    }
}

服务器端源码:

package cn.it.ws.a;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Socket服务端,接收客户端请求,实现小写转大写功能
 */
public class SocketSer {


    public static void main(String[] args) throws IOException {

        ServerSocket ss = new ServerSocket(9999);
        while(true) {
            System.out.println("等待客户端请求---");
            Socket socket = ss.accept();
            System.out.println("握手成功---------");
            //通过输入流获取数据
            InputStream input = socket.getInputStream();
            byte[] b = new byte[1024];
            int len = input.read(b);
            String data = new String(b,0,len);
            System.out.println("客户端数据为:"+data);
            OutputStream output = socket.getOutputStream();
            output.write(data.toUpperCase().getBytes());
            output.close();
            input.close();
            socket.close();
        }


    }

}

 

posted @ 2018-09-14 14:11  小虾米甜  阅读(663)  评论(0)    收藏  举报