用java實現模擬http請求的簡單介紹

本文目錄一覽:

如何使用HttpClient包實現JAVA發起HTTP請求

public class HttpClientUtil {

public static String doGet(String url, MapString, String param) {

// 創建Httpclient對象

CloseableHttpClient httpclient = HttpClients.createDefault();

String resultString = “”;

CloseableHttpResponse response = null;

try {

// 創建uri

URIBuilder builder = new URIBuilder(url);

if (param != null) {

for (String key : param.keySet()) {

builder.addParameter(key, param.get(key));

}

}

URI uri = builder.build();

// 創建http GET請求

HttpGet httpGet = new HttpGet(uri);

// 執行請求

response = httpclient.execute(httpGet);

// 判斷返回狀態是否為200

if (response.getStatusLine().getStatusCode() == 200) {

resultString = EntityUtils.toString(response.getEntity(), “UTF-8”);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (response != null) {

response.close();

}

httpclient.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return resultString;

}

public static String doGet(String url) {

return doGet(url, null);

}

  

public static String doPost(String url, MapString, String param) {

// 創建Httpclient對象

CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpResponse response = null;

String resultString = “”;

try {

// 創建Http Post請求

HttpPost httpPost = new HttpPost(url);

// 創建參數列表

if (param != null) {

ListNameValuePair paramList = new ArrayList();

for (String key : param.keySet()) {

paramList.add(new BasicNameValuePair(key, param.get(key)));

}

// 模擬表單

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);

httpPost.setEntity(entity);

}

// 執行http請求

response = httpClient.execute(httpPost);

    System.out.println(response.getStatusLine());

   resultString = EntityUtils.toString(response.getEntity(), “utf-8”);

System.out.println(resultString);

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

response.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return resultString;

}

public static String doPost(String url) {

return doPost(url, null);

}

public static String doPostJson(String url, String json) {

// 創建Httpclient對象

CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpResponse response = null;

String resultString = “”;

try {

// 創建Http Post請求

HttpPost httpPost = new HttpPost(url);

// 創建請求內容

StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);

httpPost.setEntity(entity);

// 執行http請求

response = httpClient.execute(httpPost);

resultString = EntityUtils.toString(response.getEntity(), “utf-8”);

  } catch (Exception e) {

e.printStackTrace();

} finally {

try {

response.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return resultString;

}

}

怎樣用JAVA實現模擬HTTP請求,得到伺服器的響應時間等參數

java.net.*;

public class HttpDemo{

    public static void main(String[] args)throws Exception{

        URL url = new URL(‘地址’);

        HttpURLConnection http = (HttpURLConnection)url.openConnection();

        //獲取網頁的源碼

        BufferedReader br = new BufferedReader(new InputStreamReader(http.getInputStream()));

        String line = “”;

        while((line=br.readLine())!=null){

            System.out.println(line);

        }

        br.close();

        //獲取參數:

        String value = getRequestProperty(String key);

    }

}

怎樣編寫http請求的java程序

目前web上的消息通訊方式主要有以下幾種。輪詢,長連接,websocket輪詢:隔一段時間訪問伺服器,伺服器不管有沒有新消息都立刻返回。長連接:頁面向伺服器發出請求,由伺服器決定什麼時候返回。(如果有新消息則立刻返回,沒有的話就保持連接,直到有新消息才返回)websocket:類似JavaSocket,由Http請求模擬實現的socket。要實現長連接的關鍵就是:由伺服器端決定什麼時候返回數據。比如在servlet中。doGet(){Thread.sleep(30000);return}這就是一個長連接的例子,只是沒有任何意義而已。你要做的就是在doGet中阻塞住,while(!hasNewMsg){sleep(500)}returnnewMsg當然你的ajax超時時間要設置長一點。如果可以的話,最好可以使用websocket。

怎麼用java模擬http請求

/*

* 得到返回的內容

*/

public static String getResult(String urlStr, String content) {

URL url = null;

HttpURLConnection connection = null;

try {

url = new URL(urlStr);

connection = (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setRequestMethod(“POST”);

connection.setUseCaches(false);

connection.connect();

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.writeBytes(content);

out.flush();

out.close();

BufferedReader reader = new BufferedReader(new InputStreamReader(connection

.getInputStream(), “utf-8”));

StringBuffer buffer = new StringBuffer();

String line = “”;

while ((line = reader.readLine()) != null) {

buffer.append(line);

}

reader.close();

return buffer.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (connection != null) {

connection.disconnect();

}

}

return null;

}

追問:

沒注釋嗎?

追答:

/*

* 得到返回的內容

*/

public static String getResult(String urlStr, String content) {

URL url = null;

HttpURLConnection connection = null;

try {

url = new URL(urlStr);

connection = (HttpURLConnection) url.openConnection();//新建連接實例

connection.setDoOutput(true);//是否打開輸出流 true|false

connection.setDoInput(true);//是否打開輸入流true|false

connection.setRequestMethod(“POST”);//提交方法POST|GET

connection.setUseCaches(false);//是否緩存true|false

connection.connect();//打開連接埠

DataOutputStream out = new DataOutputStream(connection.getOutputStream());//打開輸出流往對端伺服器寫數據

out.writeBytes(content);//寫數據,也就是提交你的表單 name=xxxpwd=xxx

out.flush();//刷新

out.close();//關閉輸出流

BufferedReader reader = new BufferedReader(new InputStreamReader(connection

.getInputStream(), “utf-8”));//往對端寫完數據 對端伺服器返回數據 ,以BufferedReader流來讀取

StringBuffer buffer = new StringBuffer();

String line = “”;

while ((line = reader.readLine()) != null) {

buffer.append(line);

}

reader.close();

return buffer.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (connection != null) {

connection.disconnect();//關閉連接

}

}

return null;

}

原創文章,作者:AOADG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325088.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AOADG的頭像AOADG
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論