<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java語言

    java如何利用java.net.URLConnection發送HTTP

    時間:2025-01-29 17:10:12 java語言 我要投稿
    • 相關推薦

    java如何利用java.net.URLConnection發送HTTP請求

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

      運用原生Java Api發送簡單的Get請求、Post請求步驟

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

      2.設置請求的參數

      3.發送請求

      4.以輸入流的形式獲取返回內容

      5.關閉輸入流

      發送請求與接收響應流類 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;

      //響應失敗

      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();

      //響應失敗

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

      //接收響應流

      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;

      }

      }

      為測試方便,新建一個項目,并新建一個Servlet,接收post請求并對HttpRequestor請求響應,發出響應流:此處使用了

      注解: @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");

      //響應流

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

      }

      }

      測試類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請求類LoginServlet,控制臺測試結果2.HttpRequestor接收LoginServlet返回的流

      OK,完成

      對于接收TestProgect2項目中LoginServlet.java類返回的流,在真實環境中可能是異步接收返回的流的,當一臺機器A向另外一臺機器B發送請求,B接收到A的信息,將信息處理后,需要將處理結果返回即響應返回給A,A會接收到B返回的信息可以另外建一個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發送HTTP】相關文章:

    Java 發送http請求上傳文件功能案例04-20

    JAVA如何獲取HTTP請求頭02-14

    Java 發送郵件12-06

    如何利用java讀取網絡照片01-08

    關于java實現http請求工具類示例02-26

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

    java如何構造03-02

    如何使用java05-27

    如何使用JSP來發送郵件07-04

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人