HttpServer中HttpExchange getRequestBody方法获取不到Post请求表单数据

yinxingchen521165737 2013-09-18 10:51:21
// Java 类文件
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class JavaHttpServer {

public static void main(String[] args) {
try {
HttpServer hs = HttpServer.create(new InetSocketAddress(8888), 0);// 设置HttpServer的端口为8888
hs.createContext("/get/user", new MyHandler());// 用MyHandler类内处理到
hs.setExecutor(null); // creates a default executor
hs.start();
} catch (Exception e) {

}
}
}

class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
InputStream is = t.getRequestBody();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String line = null;
while((line = in.readLine()) != null){
System.out.println(line); // 是空的???为啥啊
}
String response = "<font color='#ff0000'>come on baby</font>";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
// 测试表单
<html>
<body>
<form action="http://127.0.0.1:8888/get/user" method="POST">
<button type="submit">提交</button>
<input id="txtX1" type="text" value="111111"/>
<input id="txtY1" type="text" value="2222"/>
</form>
</body>
</html>
...全文
3873 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
伊国的君上 2016-05-29
  • 打赏
  • 举报
回复
楼主,怎么解决的,我也遇到了同样的问题
luobochen 2015-11-26
  • 打赏
  • 举报
回复
private void parseGetParameters(HttpExchange exchange) throws UnsupportedEncodingException { Map<String, Object> parameters = new HashMap<String, Object>(); URI requestedUri = exchange.getRequestURI(); String query = requestedUri.getRawQuery(); parseQuery(query, parameters); exchange.setAttribute("parameters", parameters); } private void parsePostParameters(HttpExchange exchange) throws IOException { if ("post".equalsIgnoreCase(exchange.getRequestMethod())) { @SuppressWarnings("unchecked") Map<String, Object> parameters = (Map<String, Object>)exchange.getAttribute("parameters"); InputStreamReader isr = new InputStreamReader(exchange.getRequestBody(),"utf-8"); BufferedReader br = new BufferedReader(isr); String query = br.readLine(); parseQuery(query, parameters); }
无心流泪 2015-10-08
  • 打赏
  • 举报
回复
楼主太不地道了,解决了不把解决办法贴出来
schnuffelrr 2015-09-15
  • 打赏
  • 举报
回复
怎么解决的?
踮起脚尖眺望 2014-08-12
  • 打赏
  • 举报
回复
lz 说好的 解决方法呢
杍羭 2013-12-24
  • 打赏
  • 举报
回复
把解决办法贴出来,现在在发愁呢。。
  • 打赏
  • 举报
回复
已经解决了,谢谢大家回帖!
  • 打赏
  • 举报
回复
引用 3 楼 qq864680621 的回复:
HttpHandler HttpExchange 这两个类是自己写的吗?t.getRequestBody();这里面是怎么写的
HttpHandler HttpExchange 都是jdk1.6特有的,不是我自己写的,t.getRequestBody()也不是我自己写的,都是Java的,我需要获取以表单形式提交的数据。。。。
踩踩一哥 2013-09-18
  • 打赏
  • 举报
回复
HttpHandler HttpExchange 这两个类是自己写的吗?t.getRequestBody();这里面是怎么写的
  • 打赏
  • 举报
回复
这个大哥,请看一下标题好吗,不是直接使用Web的,而是使用HttpServer,目前只能获取到超链接后面的参数,获取不到表单传输的数据....
snow-is-my-Love 2013-09-18
  • 打赏
  • 举报
回复
request.getParameter

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧