代码
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.InetSocketAddress;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class HttpServerPostAndGet {
public static void main(String[] arg) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8001), 0);
server.createContext("/test", new TestHandler());
server.start();
}
static class TestHandler implements HttpHandler{
@Override
public void handle(HttpExchange exchange) {
String response = "http service test:hello world ";
try{
//获得查询字符串(get)
String queryString = exchange.getRequestURI().getQuery();
Map<String,String> queryStringInfo = formData2Dic(queryString);
response = response+"\n get:"+queryString;
//获得表单提交数据(post)
String postString = IOUtils.toString(exchange.getRequestBody());
Map<String,String> postInfo = formData2Dic(postString);
response = response + "\n post:";
Collection<String> keys = postInfo.keySet();
Collection<String> cvalues = postInfo.values();
Iterator iterk = keys.iterator();
response = response + "\n keys:";
Iterator itery = cvalues.iterator();
while(iterk.hasNext()) {
response = response +" "+iterk.next();
}
response = response + "\n values:";
while(itery.hasNext()) {
response = response+" "+itery.next();
}
exchange.sendResponseHeaders(200,0);
OutputStream os = exchange.getResponseBody();
os.write(response.getBytes());
os.close();
}catch (IOException ie) {
} catch (Exception e) {
}
}
}
public static Map<String,String> formData2Dic(String formData ) {
Map<String,String> result = new HashMap<>();
if(formData== null || formData.trim().length() == 0) {
return result;
}
final String[] items = formData.split("&");
Arrays.stream(items).forEach(item ->{
final String[] keyAndVal = item.split("=");
if( keyAndVal.length == 2) {
try{
final String key = URLDecoder.decode( keyAndVal[0],"utf8");
final String val = URLDecoder.decode( keyAndVal[1],"utf8");
result.put(key,val);
}catch (UnsupportedEncodingException e) {}
}
});
return result;
}
}
get运行效果
post运行效果
post客户端代码
<html>
<titile></title>
<body>
<form action="http://127.0.0.1:8001/test?page=2&type=1">
<input name="text1" type="text"/>
<input name="text2" type="text"/>
<input type="submit" value="submit" >
</form>
</body>
</html>