<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院