tcp socket客户端发送请求连接http服务

来源:互联网 发布:乐淘吧淘宝天猫商城 编辑:程序博客网 时间:2024/06/05 19:59

首先模拟一个http服务端,用于接收请求

package bhpp.rsserver.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.InetSocketAddress;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.net.ssl.HttpsURLConnection;import com.sun.net.httpserver.HttpExchange;import com.sun.net.httpserver.HttpHandler;import com.sun.net.httpserver.HttpServer;public class HttpServerTest {    private ExecutorService pool=Executors.newCachedThreadPool();    public HttpServerTest(){        try {            HttpServer server=HttpServer.create(new InetSocketAddress(6666), 3000);            server.createContext("/",new Handler());            server.setExecutor(pool);            server.start();            System.out.println("Http 启动...");        } catch (IOException e) {            e.printStackTrace();        }    }    class Handler implements HttpHandler{        @Override        public void handle(HttpExchange exc) throws IOException {            BufferedReader reader=new BufferedReader(new InputStreamReader(exc.getRequestBody()));            //用于存储请求信息            String requestMessage=reader.readLine();            System.out.println(requestMessage);            String response="true";            exc.sendResponseHeaders(HttpsURLConnection.HTTP_OK,                    response.getBytes().length);            OutputStream out=exc.getResponseBody();            out.write(response.getBytes());            out.flush();            out.close();            exc.close();        }    }    public static void main(String[] args) {        new HttpServerTest();    }}

其次socket发送请求连接http服务

package bhpp.rsserver.test;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;import java.net.URLEncoder;/**TCP 客户端连接HTTP服务端 * @author cyq * */public class TcpToHttpClient{    public TcpToHttpClient() throws IOException {        //sendPost();        sendGet();    }    public static void main(String[] args) throws IOException {        new TcpToHttpClient();    }     /**post方式     * @throws IOException     */    public void sendPost() throws IOException{        String path = "/";          String data = URLEncoder.encode("username", "utf-8") + "=" + URLEncoder.encode("zs", "utf-8") + "&" +                  URLEncoder.encode("pwd", "utf-8") + "=" + URLEncoder.encode("32", "utf-8");        SocketAddress dest = new InetSocketAddress("localhost", 6666);        Socket socket = new Socket();        socket.connect(dest);        OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream(), "utf-8");        BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);        bufferedWriter.write("POST " + path + " HTTP/1.1\r\n");        bufferedWriter.write("Host: " + "localhost" + "\r\n");        bufferedWriter.write("Content-Length: " + data.length() + "\r\n");        bufferedWriter.write("Content-Type: application/x-www-form-urlencoded\r\n");         bufferedWriter.write("\r\n");        bufferedWriter.write(data);        bufferedWriter.flush();        bufferedWriter.write("\r\n");         bufferedWriter.flush();        BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream());          BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(streamReader, "utf-8"));          String line = null;        while((line = bufferedReader.readLine())!= null){              System.out.println(line);          }          bufferedReader.close();          bufferedWriter.close();          socket.close();      }    /**get方式     * @throws IOException     */    public void sendGet() throws IOException{        String path = "/";        SocketAddress dest = new InetSocketAddress("localhost", 6666);        Socket socket = new Socket();        socket.connect(dest);        OutputStreamWriter streamWriter = new OutputStreamWriter(socket.getOutputStream());        BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);        bufferedWriter.write("GET " + path + " HTTP/1.1\r\n");        bufferedWriter.write("Host: " + "localhost" + "\r\n");        bufferedWriter.write("\r\n");        bufferedWriter.flush();        BufferedInputStream streamReader = new BufferedInputStream(socket.getInputStream());        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(streamReader, "utf-8"));          String line = null;        while((line = bufferedReader.readLine())!= null){            System.out.println(line);        }        bufferedReader.close();        bufferedWriter.close();        socket.close();    }}  
0 0
原创粉丝点击