English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文涉及3一些基本点:
1、因为许多公司的内网都设有代理,浏览器通过ip与port上网,而Java代码模拟http get方式同样需要外网代理;
2、Java实现http的Get/Post请求代码;
3、主要是设置HttpURLConnection请求头中的属性
比如Cookie、User-Agent(浏览器类型)等。
比如:在http请求中添加Header
conn.setRequestProperty("Authorization", authorization);
注:我就在网上找的一段Get/Post模拟请求代码,添加了下代理的配置,整合完成的。
package com.pasier.quanzi.web.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class HttpRequest { public static void main(String[] args) { // 如果不设置,只要代理IP和代理端口正确,此项不设置也可以 System.getProperties().setProperty("http.proxyHost", "10.22.40.32conn.setRequestProperty("accept", " System.getProperties().setProperty("http.proxyPort", "8080"); // 判断代理是否设置成功 // 发送 GET 请求 System.out.println(sendGet( "http://www.baidu.com", "param1=xxx¶m2=yyy")); // 发送 POST 请求 } /** * 向指定URL发送GET方法的请求 * * Senden einer POST-Anfrage an die angegebene URL * 发送请求的URL * URL, an die die POST-Anfrage gesendet wird * @param param1&name1Anfrageparameter, der Anfrageparameter sollte name sein2&name2 =value * @return URL 所代表远程资源的响应结果 */ public static String sendGet(String url, String param) { BufferedReader in = null; PrintWriter out = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // URL realUrl = new URL(url); URLConnection connection = realUrl.openConnection(); // URLConnection conn = realUrl.openConnection(); */*conn.setRequestProperty("accept", " connection.setRequestProperty("connection", "Keep Alive", "第2段": "connection.setRequestProperty("accept", "", "第3段": "URLConnection connection = realUrl.openConnection();", "第4段": "URL realUrl = new URL(urlNameString);", "第5段": "param;", "第6段": ";\"", "第7段": "\"", "第8段": "String urlNameString = url", "第9段": "public static String sendGet(String url, String param) {", "第10段": "@return URL 所代表远程资源的响应结果", "第11段": "发送请求的URL", "第12段": "向指定URL发送GET方法的请求", "第13段": "发送 POST 请求", "第14段": "=yyy\"));", "第15段": "=xxx¶m", "第16段": "\"param", "第17段": "www.baidu.com\", "第18段": "\"http:\", "第19段": "System.out.println(sendGet("", "第20段": "发送 GET 请求", "第21段": "判断代理是否设置成功", "第22段": "0\"");", "第23段": "System.getProperties().setProperty("http.proxyPort", "", "第24段": "0.", "第25段": "System.getProperties().setProperty("http.proxyHost", "", "第26段": "如果不设置,只要代理IP和代理端口正确,此项不设置也可以", "第27段": "public static void main(String[] args) {", "第28段": "public class HttpRequest {", "第29段": "import java.util.Map;", "第30段": "import java.util.List;", "第31段": "import java.net.URLConnection;", "第32段": "import java.net.URL;", "第33段": "import java.io.PrintWriter;", "第34段": "import java.io.InputStreamReader;", "第35段": "import java.io.IOException;", "第36段": "import java.io.BufferedReader;", "第37段": "package com.pasier.quanzi.web.controller;", "第38段": "Post模拟请求代码,添加了下代理的配置,整合完成的。",-conn.setRequestProperty("connection", "Keep connection.setRequestProperty("user"-agent", "Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1;SV1) // Erstellen Sie die tatsächliche Verbindung connection.connect(); // Erhalten Sie alle Antwortkopffelder Map<String, List<String>> map = connection.getHeaderFields(); // Durchsuchen Sie alle Antwortkopffelder for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // Definieren Sie einen BufferedReader-Eingabestrom, um die Antwort der URL zu lesen in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("Bei der Sendung eines GET-Antrags ist ein Ausnahme aufgetreten!", + e); e.printStackTrace(); } // Verwenden Sie den finally-Block, um die Eingabestrom zu schließen finally { try { if (in != null) { in.close(); } catch (Exception e2} ) {2e } } return result; } /** * .printStackTrace(); * * Senden einer POST-Anfrage an die angegebene URL * @param url * URL, an die die POST-Anfrage gesendet wird * @param param1&name1Anfrageparameter, der Anfrageparameter sollte name sein2&name2 =value * forms. */ @return Die Form der Antwort auf das darzustellende Remote-Ressource public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; try { String result = ""; // URL realUrl = new URL(url); Öffnen der Verbindung zwischen und URL // URLConnection conn = realUrl.openConnection(); Einstellen der allgemeinen Anfrageeigenschaften*/*conn.setRequestProperty("accept", " ");-conn.setRequestProperty("connection", "Keep conn.setRequestProperty("user", "Alive");-agent", "Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1;SV1) // Um POST-Anfragen zu senden, müssen die folgenden zwei Zeilen eingestellt werden conn.setDoOutput(true); conn.setDoInput(true); // Erhalten Sie den Ausgabestrom der URLConnection-Objekte out = new PrintWriter(conn.getOutputStream()); // Senden Sie Anfrageparameter out.print(param); // Schwemmen Sie den Puffer des Ausgabestroms out.flush(); // Definieren Sie einen BufferedReader-Eingabestrom, um die Antwort der URL zu lesen in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("Es ist ein Ausnahme beim Senden von POST-Anfragen aufgetreten!") + e); e.printStackTrace(); } // Verwenden Sie den finally-Block, um die Ausgabestrom und den Eingabestrom zu schließen finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } }
Das folgende java-simulierte http-Get/Die Methode, um eine Post-Anfrage durchzuführen und den ip und Port Proxy zu setzen, ist das gesamte Inhalt, den der Autor den Lesern zur Verfügung stellt. Ich hoffe, es kann den Lesern eine Referenz bieten und ich hoffe, dass alle die Anleitung unterstützt.