import java.io.*; import java.net.Socket; public class HTTPUtil { private String getReq = ""; private String postReq = ""; private String host = ""; private String port = "80"; //从请求中解析host和默认端口号 protected void praseHost(String arg) { if (arg.indexOf(":") == arg.lastIndexOf(":")) { host = arg.toLowerCase().replace("host:", "") .trim(); } else { host = arg.toLowerCase().replace("host:", "") .trim().split(":")[0]; port = arg.toLowerCase().replace("host:", "") .trim().split(":")[1]; } } public void setRequest(String req) { if (req.toLowerCase().startsWith("get")) { setGetRequest(req); } else { setPostRequest(req); } } //设置GET请求原文 protected void setGetRequest(String req) { String[] args = req.split("\n"); for(String arg: args) { getReq += arg + "\r\n"; if (arg.startsWith("Host")) { praseHost(arg); } } getReq += "\r\n"; } //设置POST请求原文 protected void setPostRequest(String req) { String postFlag = "$POST_CRLF$"; req = req.replace("\n\n",postFlag); String[] args = req.split("\n"); for(String arg: args) { postReq += arg + "\r\n"; if (arg.toLowerCase().startsWith("host")) { praseHost(arg); } } postReq = postReq.replace(postFlag,"\r\n\r\n"); postReq += "\r\n"; } //发送请求并打印结果 public String getResponse() { String res = ""; try { Socket s = new Socket(host,Integer.valueOf(port)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); if (getReq.isEmpty()) { bw.write(postReq); postReq = "";//置空 } else { bw.write(getReq); getReq = "";//置空 } bw.flush(); String line = null; while ((line = br.readLine()) != null) { res += line + "\n"; } bw.close(); br.close(); System.out.println("[+] Done."); } catch (IOException e) { e.printStackTrace(); } return res; } }