java 写的能够响应浏览器请求的 http 服务器

这只是一个小Demo,话几十分钟搞出来的。

不废话先上代码。

首先是服务端的

package com.cnryb;



import java.io.IOException;

import java.io.OutputStream;

import java.net.InetSocketAddress;



import org.apache.http.HttpStatus;



import com.sun.net.httpserver.*;



public class HttpSer {



    /**

     * @param args

     * @throws IOException

     */

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

        HttpServer server = HttpServer.create(new InetSocketAddress(

                "127.0.0.1", 8765), 0);

        server.createContext("/",new MyResponseHandler());

        server.setExecutor(null); // creates a default executor

        server.start();



    }

    public static class MyResponseHandler implements HttpHandler {

        @Override

        public void handle(HttpExchange httpExchange) throws IOException {

            //针对请求的处理部分     

            //返回请求响应时,遵循HTTP协议  

            String responseString = "<font color='#ff0000'>Hello! This a HttpServer!</font>"; 

            //设置响应头  

            httpExchange.sendResponseHeaders(HttpStatus.SC_OK, responseString.length());    

            OutputStream os = httpExchange.getResponseBody();    

            os.write(responseString.getBytes());    

            os.close();  

        }

    }



}

容易出现问题的是端口被占用,解决办法

换一个端口,嘿嘿

 

然后是用java访问该服务器的代码

package com.cnryb;



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;



import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;



public class HttpC {



    /**

     * @param args

     * @throws IOException

     * @throws IllegalStateException

     */

    public static void main(String[] args) throws IllegalStateException,

            IOException {

        HttpClient httpclient = new DefaultHttpClient();

        HttpPost httpPost=new HttpPost("http://127.0.0.1:8765");

//        HttpGet httpgets = new HttpGet("http://127.0.0.1:8765");

//        HttpResponse response = httpclient.execute(httpgets);

        HttpResponse response=httpclient.execute(httpPost);

        HttpEntity entity = response.getEntity();

        if (entity != null) {

            InputStream instreams = entity.getContent();

            BufferedReader bf = new BufferedReader(new InputStreamReader(

                    instreams));

            StringBuilder sb=new StringBuilder();

            String line = null;

            while ((line = bf.readLine()) != null) {

                sb.append(line + "\n");

            }

            System.out.println(sb.toString());

//            httpgets.abort();

            httpPost.abort();

        }

    }



}

这个段代码不只是能够访问这一个服务,别的已经存在的服务器也能够范围,像百度神马的,简单来说就是模拟浏览器请求的

写这些东西的时候,唯一让我纠结的就是那些该死的jar包,为了不让亲们纠结,我把我写好的demo也放上来,里面有jar包的

Live Writer竟然不能放附件??等会儿手动上传吧

 

源代码点这里下载

 

你可能感兴趣的:(java)