package tools; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; import org.aspectj.weaver.ast.Call; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class HttpRequest { /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 * @throws Exception * @throws MalformedURLException */ /* * public static String queryWebservice2(String url) throws * MalformedURLException, Exception{ String xml = ""+ * "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+ * "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" * + "<soap:Body>"+ * "<GetShipmentStatusByBillId xmlns=\"http://ShipmentStatus\">"+ * "<Freight>172-20966794</Freight>"+ "<Xquery>BA8EC</Xquery>"+ * "</GetShipmentStatusByBillId>"+ "</soap:Body>"+ "</soap:Envelope>"; * Client c = new Client(new URL(url)); Object[] o = * c.invoke("GetShipmentStatusByBillId", new Object[]{xml}); if(o != null) * return o[0].toString(); return null; } */ public static String queryWebservice(String url) { PrintWriter out = null; BufferedReader in = null; String result = ""; System.out.println("start!"); try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); HttpURLConnection httpConn = (HttpURLConnection) conn; httpConn.setDoInput(true); httpConn.setDoOutput(true); httpConn.setRequestMethod("POST"); httpConn.setRequestProperty("Host", "10.50.3.66"); // httpConn.setRequestProperty("Content-Type", // "application/soap+xml; charset=utf-8"); httpConn.setRequestProperty("Connect-Type", "text/xml;charset=UTF-8"); // httpConn.setRequestProperty("SOAPAction", // "http://ShipmentStatus/GetShipmentStatusByBillId"); String data = "" + "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" + "<soap:Body>" + "<GetShipmentStatusByBillId xmlns=\"http://ShipmentStatus\">" + "<Freight>172-20966794</Freight>" + "<Xquery>BA8EC</Xquery>" + "</GetShipmentStatusByBillId>" + "</soap:Body>" + "</soap:Envelope>"; httpConn.setRequestProperty("Content-Length", data.length() + ""); OutputStream out1 = httpConn.getOutputStream(); out1.write(data.getBytes()); System.out.println("response code:" + httpConn.getResponseCode()); if (httpConn.getResponseCode() == 200) { // 获得输入流 InputStream in1 = httpConn.getInputStream(); // 使用输入流的缓冲区 BufferedReader reader = new BufferedReader(new InputStreamReader(in1)); StringBuffer sb = new StringBuffer(); String line = null; // 读取输入流 while ((line = reader.readLine()) != null) { sb.append(line); } /* * //创建sax的读取器 SAXReader saxReader = new SAXReader(); //创建文档对象 * Document doc = saxReader.read(new * StringReader(sb.toString())); //获得请求响应return元素 List<Element> * eles = doc.selectNodes("//return"); for(Element ele : eles){ * System.out.println(ele.getText()); } */ return sb.toString(); } } catch (Exception e) { e.printStackTrace(); } System.out.println("end"); return null; } public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url;// + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } public static String sendPost2(String url, String Params) { OutputStreamWriter out = null; BufferedReader reader = null; String response = ""; try { URL httpUrl = null; // HTTP URL类 用这个类来创建连接 // 创建URL httpUrl = new URL(url); // 建立连接 HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("connection", "keep-alive"); conn.setUseCaches(false);// 设置不要缓存 conn.setInstanceFollowRedirects(true); conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); // POST请求 out = new OutputStreamWriter(conn.getOutputStream()); out.write(Params); out.flush(); // 读取响应 reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String lines; while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); response += lines; } reader.close(); // 断开连接 conn.disconnect(); } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (reader != null) { reader.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return response; } /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("Origin", "chrome-extension://zejoelaoggembcahzgimdiliamlcdmfm"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Accept", "*/*"); conn.setRequestProperty("Accept-Encoding", "gzip,deflate,utf-8"); conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9"); //conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //conn.setRequestProperty("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); //conn.setRequestProperty("Content-Encoding", "gzip"); //conn.setRequestProperty("Content-Type", "text/html;charset=UTF-8"); //conn.setRequestProperty("accept", "*/*"); //conn.setRequestProperty("connection", "Keep-Alive"); //conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // out = new OutputStreamWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // out.write(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); // in = conn.getInputStream(); String line; /*byte buffer[] = new byte[1024]; while(in.read(buffer) > 0) { result += new String(buffer, "UTF-8"); }*/ while ((line = in.readLine()) != null) { //System.out.println("hello"); result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } public static String sendPost3(String url,String Params){ OutputStreamWriter out = null; BufferedReader reader = null; String response=""; try { URL httpUrl = null; //HTTP URL类 用这个类来创建连接 //创建URL httpUrl = new URL(url); //建立连接 HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("connection", "keep-alive"); conn.setUseCaches(false);//设置不要缓存 conn.setInstanceFollowRedirects(true); conn.setDoOutput(true); conn.setDoInput(true); conn.connect(); //POST请求 out = new OutputStreamWriter( conn.getOutputStream()); out.write(Params); out.flush(); //读取响应 reader = new BufferedReader(new InputStreamReader( conn.getInputStream())); String lines; while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); response+=lines; } reader.close(); // 断开连接 conn.disconnect(); } catch (Exception e) { System.out.println("发送 POST 请求出现异常!"+e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally{ try{ if(out!=null){ out.close(); } if(reader!=null){ reader.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return response; } public static String doHttpPost(String URL, String xmlInfo) { byte[] xmlData = xmlInfo.getBytes(); InputStream instr = null; java.io.ByteArrayOutputStream out = null; try { URL url = new URL(URL); URLConnection urlCon = url.openConnection(); urlCon.setDoOutput(true); urlCon.setDoInput(true); urlCon.setUseCaches(false); urlCon.setRequestProperty("content-Type", "application/json"); urlCon.setRequestProperty("charset", "utf-8"); urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length)); System.out.println(String.valueOf(xmlData.length)); DataOutputStream printout = new DataOutputStream( urlCon.getOutputStream()); printout.write(xmlData); printout.flush(); printout.close(); instr = urlCon.getInputStream(); byte[] bis = IOUtils.toByteArray(instr); String ResponseString = new String(bis, "UTF-8"); if ((ResponseString == null) || ("".equals(ResponseString.trim()))) { System.out.println("返回空"); } System.out.println("返回数据为:" + ResponseString); return ResponseString; } catch (Exception e) { e.printStackTrace(); return "0"; } finally { try { out.close(); instr.close(); } catch (Exception ex) { return "0"; } } } }