这只是一个小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 写的能够响应浏览器请求的 http 服务器的更多相关文章

  1. 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题

    1.服务器(Server)响应,浏览器(Brower)请求: 对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应.在JavaWeb项目中,大致包含.java文件的数据处理模块,和 ...

  2. Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  3. Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装

    在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...

  4. Java写的斗地主游戏源码

    源码下载在最后 我们的前年的课设要求做一个斗地主程序,当时正在愁如何做界面,当时刚好在学习C#,于是就用C#完成了这个程序.一方面,当时我C#功底还很差(其实现在也不怎么样),很多地方用了“笨办法”, ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java web Servlet学习笔记-2 请求重定向和请求转发的区别

    请求转发与请求重定向的区别 请求重定向和转发 1.请求重定向:浏览器的行为(通过响应对象HttpServletResponse来执行) 特点:可以重新定向访问其他Web应用下的资源 浏览器发出了2次请 ...

  7. JAVA写接口傻瓜(#)教程(四)

    接上篇 7.sevlert 啊啊啊终于写到最重要的实现部分了.Servlet = Service + Applet,表示小服务程序.Servlet 是在服务器上运行的小程序.这个词是在 Java ap ...

  8. java使用POST发送soap报文请求webservice返回500错误解析

    本文使用JAX-WS2.2编译webservice,并使用HttpUrlConnection的POST方式对wsdl发送soap报文进行请求返回数据, 对错误Server returned HTTP ...

  9. java模拟http的Get/Post请求,并设置ip与port代理

    本文涉及3个基本点: 1.因为很多公司的内网都设有代理,浏览器通过ip与port上网,而java代码模拟http get方式同样需要外网代理: 2.Java实现http的Get/Post请求代码: 3 ...

随机推荐

  1. Javascript 中 null、NaN和undefined的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1; var a2 = tr ...

  2. hibernate查询显示参数

    log4j.property改为如下 ### direct log messages to stdout ###          log4j.appender.stdout=org.apache.l ...

  3. 解决laravel中环境配置不起作用的方法

    博客已经迁移到www.imyzf.com,本站不再更新,请谅解! laravel有个环境配置选项很好用,在bootstrap/start.php中,曾经百度到这里面加入域名,就可以自动选择环境 $en ...

  4. 阿里云服务器centos5.10安装lamp环境

    ==相关命令== 查看linux版本:cat /etc/redhat-release ==配置修改== 一.Apache配置 ------------------------------------- ...

  5. 推荐:PHPCMS v9 安全防范教程!

    一.目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了. 如果通过chmod 755 * -R 的话,php文件的权限就高了. ...

  6. 我写了个教程《一步步教你把ubuntu安装到U盘》

    一步步教你把ubuntu安装到U盘 作者 Val 2452013147@qq.com 原因: 由于某些原因(学生党),需要把ubuntu安装到U盘到处走,百度了一下,教程都不是很好,要么很复杂,要么不 ...

  7. python连接zookeeper的日志问题

    用python连接zookeeper时,在终端里,一直会有zookeeper的日志冒出来,这样会很烦. -- ::,:(: Exceeded deadline by 11ms 解决方法是在连接后设置一 ...

  8. uCGUI窗口初始化过程

    一.相关结构体和变量 重要的uCGUI系统全局变量 NextDrawWin                      下一个需要重绘的窗口句柄 WM__NumWindows       系统当前的总共 ...

  9. 【c3p0】目前使用它的开源项目有Hibernate,Spring等

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. c3p0与dbcp区别 JNDI ...

  10. MVC-Html.ActionLink的几种写法

    Html.ActionLink("linkText","actionName") Html.ActionLink("linkText",&q ...