av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

java語言

java如何利用java.net.URLConnection發(fā)送HTTP

時(shí)間:2025-01-29 17:10:12 java語言 我要投稿
  • 相關(guān)推薦

java如何利用java.net.URLConnection發(fā)送HTTP請(qǐng)求

  如何通過Java發(fā)送HTTP請(qǐng)求,通俗點(diǎn)講,如何通過Java(模擬瀏覽器)發(fā)送HTTP請(qǐng)求。下面是由百分網(wǎng)小編為大家整理的java如何利用java.net.URLConnection發(fā)送HTTP請(qǐng)求,喜歡的可以收藏一下!了解更多詳情資訊,請(qǐng)關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)!

  運(yùn)用原生Java Api發(fā)送簡(jiǎn)單的Get請(qǐng)求、Post請(qǐng)求步驟

  1.通過統(tǒng)一資源定位器(java.net.URL)獲取連接器(java.net.URLConnection)

  2.設(shè)置請(qǐng)求的參數(shù)

  3.發(fā)送請(qǐng)求

  4.以輸入流的形式獲取返回內(nèi)容

  5.關(guān)閉輸入流

  發(fā)送請(qǐng)求與接收響應(yīng)流類 HttpRequestor

  package me.http;

  import java.io.BufferedReader;

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.InputStreamReader;

  import java.io.OutputStream;

  import java.io.OutputStreamWriter;

  import java.net.HttpURLConnection;

  import java.net.InetSocketAddress;

  import java.net.Proxy;

  import java.net.URL;

  import java.net.URLConnection;

  import java.util.Iterator;

  import java.util.Map;

  public class HttpRequestor {

  private String charset = "utf-8";

  private Integer connectTimeout = null;

  private Integer socketTimeout = null;

  private String proxyHost = null;

  private Integer proxyPort = null;

  /**

  * Do GET request

  * @param url

  * @return

  * @throws Exception

  * @throws IOException

  */

  public String doGet(String url) throws Exception {URL localURL = new URL(url);

  URLConnection connection = this.openConnection(localURL);HttpURLConnection httpURLConnection = (HttpURLConnection)connection;httpURLConnection.setRequestProperty("Accept-Charset", charset);httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");InputStream inputStream = null;

  InputStreamReader inputStreamReader = null;BufferedReader reader = null;

  StringBuffer resultBuffer = new StringBuffer();String tempLine = null;

  //響應(yīng)失敗

  if (httpURLConnection.getResponseCode() >= 300) {throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());}

  try {

  inputStream = httpURLConnection.getInputStream();inputStreamReader = new InputStreamReader(inputStream);reader = new BufferedReader(inputStreamReader);while ((tempLine = reader.readLine()) != null) {resultBuffer.append(tempLine);

  }

  } finally {

  if (reader != null) {

  reader.close();

  }

  if (inputStreamReader != null) {

  inputStreamReader.close();

  }

  if (inputStream != null) {

  inputStream.close();

  }

  }

  return resultBuffer.toString();

  }

  /**

  * Do POST request

  * @param url

  * @param parameterMap

  * @return

  * @throws Exception

  */

  public String doPost(String url, Map parameterMap) throws Exception {/* Translate parameter map to parameter date string */StringBuffer parameterBuffer = new StringBuffer();if (parameterMap != null) {

  Iterator iterator = parameterMap.keySet().iterator();String key = null;

  String value = null;

  while (iterator.hasNext()) {

  key = (String)iterator.next();

  if (parameterMap.get(key) != null) {

  value = (String)parameterMap.get(key);

  } else {

  value = "";

  }

  parameterBuffer.append(key).append("=").append(value);if (iterator.hasNext()) {

  parameterBuffer.append("&");

  }

  }

  }

  System.out.println("POST parameter : " + parameterBuffer.toString());URL localURL = new URL(url);

  URLConnection connection = this.openConnection(localURL);HttpURLConnection httpURLConnection = (HttpURLConnection)connection;httpURLConnection.setDoOutput(true);

  httpURLConnection.setRequestMethod("POST");httpURLConnection.setRequestProperty("Accept-Charset", charset);httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterBuffer.length()));OutputStream outputStream = null;

  OutputStreamWriter outputStreamWriter = null;InputStream inputStream = null;

  InputStreamReader inputStreamReader = null;BufferedReader reader = null;

  StringBuffer resultBuffer = new StringBuffer();String tempLine = null;

  try {

  outputStream = httpURLConnection.getOutputStream();outputStreamWriter = new OutputStreamWriter(outputStream);outputStreamWriter.write(parameterBuffer.toString());outputStreamWriter.flush();

  //響應(yīng)失敗

  if (httpURLConnection.getResponseCode() >= 300) {throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());}

  //接收響應(yīng)流

  inputStream = httpURLConnection.getInputStream();inputStreamReader = new InputStreamReader(inputStream);reader = new BufferedReader(inputStreamReader);while ((tempLine = reader.readLine()) != null) {resultBuffer.append(tempLine);

  }

  } finally {

  if (outputStreamWriter != null) {

  outputStreamWriter.close();

  }

  if (outputStream != null) {

  outputStream.close();

  }

  if (reader != null) {

  reader.close();

  }

  if (inputStreamReader != null) {

  inputStreamReader.close();

  }

  if (inputStream != null) {

  inputStream.close();

  }

  }

  return resultBuffer.toString();

  }

  private URLConnection openConnection(URL localURL) throws IOException {URLConnection connection;

  if (proxyHost != null && proxyPort != null) {Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));connection = localURL.openConnection(proxy);} else {

  connection = localURL.openConnection();

  }

  return connection;

  }

  /**

  * Render request according setting

  * @param request

  */

  private void renderRequest(URLConnection connection) {if (connectTimeout != null) {

  connection.setConnectTimeout(connectTimeout);}

  if (socketTimeout != null) {

  connection.setReadTimeout(socketTimeout);}

  }

  /*

  * Getter & Setter

  */

  public Integer getConnectTimeout() {

  return connectTimeout;

  }

  public void setConnectTimeout(Integer connectTimeout) {this.connectTimeout = connectTimeout;

  }

  public Integer getSocketTimeout() {

  return socketTimeout;

  }

  public void setSocketTimeout(Integer socketTimeout) {this.socketTimeout = socketTimeout;

  }

  public String getProxyHost() {

  return proxyHost;

  }

  public void setProxyHost(String proxyHost) {this.proxyHost = proxyHost;

  }

  public Integer getProxyPort() {

  return proxyPort;

  }

  public void setProxyPort(Integer proxyPort) {this.proxyPort = proxyPort;

  }

  public String getCharset() {

  return charset;

  }

  public void setCharset(String charset) {

  this.charset = charset;

  }

  }

  為測(cè)試方便,新建一個(gè)項(xiàng)目,并新建一個(gè)Servlet,接收post請(qǐng)求并對(duì)HttpRequestor請(qǐng)求響應(yīng),發(fā)出響應(yīng)流:此處使用了

  注解: @WebServlet("/LoginServlet") ,也可以在web.xml配置Servletpackage me.loginServlet;

  import java.io.IOException;

  import javax.servlet.ServletException;

  import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;

  import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**

  * Servlet implementation class LoginServlet*/

  @WebServlet("/LoginServlet")

  public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;/**

  * @see HttpServlet#HttpServlet()

  */

  public LoginServlet() {

  super();

  // TODO Auto-generated constructor stub

  }

  /**

  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

  System.out.println("111");

  }

  /**

  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

  String username = request.getParameter("username");String blog = request.getParameter("blog");System.out.println(username);

  System.out.println(blog);

  response.setContentType("text/plain; charset=UTF-8");response.setCharacterEncoding("UTF-8");

  //響應(yīng)流

  response.getWriter().write("It is ok!");

  }

  }

  測(cè)試類Test.java

  package me.http;

  import java.util.HashMap;

  import java.util.Map;

  public class Test {

  public static void main(String[] args) {

  /* Post Request */

  Map dataMap = new HashMap();

  dataMap.put("username", "Nick Huang");

  dataMap.put("blog", "IT");

  try {

  System.out.println(new HttpRequestor().doPost("http://localhost:8081/TestProgect2/LoginServlet", dataMap));//System.out.println(new HttpRequestor().doGet("http://localhost:8081/TestProgect2/LoginServlet"));} catch (Exception e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  /* Get Request */

  }

  }

  1.接收post請(qǐng)求類LoginServlet,控制臺(tái)測(cè)試結(jié)果2.HttpRequestor接收LoginServlet返回的流

  OK,完成

  對(duì)于接收TestProgect2項(xiàng)目中LoginServlet.java類返回的流,在真實(shí)環(huán)境中可能是異步接收返回的流的,當(dāng)一臺(tái)機(jī)器A向另外一臺(tái)機(jī)器B發(fā)送請(qǐng)求,B接收到A的信息,將信息處理后,需要將處理結(jié)果返回即響應(yīng)返回給A,A會(huì)接收到B返回的信息可以另外建一個(gè)Servlet類HttpListenerServlet.java來專門異步接收返回的信息package me.http;

  import java.io.BufferedReader;

  import java.io.IOException;

  import java.io.InputStream;

  import java.io.InputStreamReader;

  import javax.servlet.ServletException;

  import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;

  import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**

  * Servlet implementation class HttpListenerServlet*/

  @WebServlet("/HttpListenerServlet")

  public class HttpListenerServlet extends HttpServlet {private static final long serialVersionUID = 1L;/**

  * @see HttpServlet#HttpServlet()

  */

  public HttpListenerServlet() {

  super();

  // TODO Auto-generated constructor stub

  }

  /**

  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

  }

  /**

  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub

  InputStream inputStream = null;

  inputStream = request.getInputStream();

  InputStreamReader inputStreamReader = new InputStreamReader(inputStream);BufferedReader reader = new BufferedReader(inputStreamReader);String tempLine = null;

  StringBuffer resultBuffer=new StringBuffer();while ((tempLine = reader.readLine()) != null) {resultBuffer.append(tempLine);

  }

  System.out.println(resultBuffer.toString());}

  }

【java如何利用java.net.URLConnection發(fā)送HTTP】相關(guān)文章:

Java 發(fā)送http請(qǐng)求上傳文件功能案例04-20

JAVA如何獲取HTTP請(qǐng)求頭02-14

Java 發(fā)送郵件12-06

如何利用java讀取網(wǎng)絡(luò)照片01-08

關(guān)于java實(shí)現(xiàn)http請(qǐng)求工具類示例02-26

利用Java終止線程的方法04-05

java如何構(gòu)造03-02

如何使用java05-27

如何使用JSP來發(fā)送郵件07-04