一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java編程:發(fā)送HTTP請(qǐng)求到服務(wù)器

如意 ? 來(lái)源:百家號(hào) ? 作者: 米粒教育 ? 2020-07-01 09:59 ? 次閱讀

當(dāng)Java程序需要向服務(wù)器發(fā)送請(qǐng)求或讀取服務(wù)器數(shù)據(jù)時(shí),使用URLConnection類是比較好的選擇。URLConnection類封裝了與服務(wù)器互動(dòng)操作的方法,通過(guò)它可以建立與服務(wù)器的遠(yuǎn)程連接,檢查服務(wù)器資源的屬性,向服務(wù)器發(fā)送請(qǐng)求并接收服務(wù)器返回的數(shù)據(jù)。

Java編程:發(fā)送HTTP請(qǐng)求到服務(wù)器

URLConnection類是一個(gè)抽象類,它不能直接實(shí)例化為對(duì)象,但URL實(shí)例對(duì)象可以返回一個(gè)URLConnection類的子類對(duì)象。返回的子類對(duì)象與URL打開的網(wǎng)絡(luò)資源采用的協(xié)議有關(guān)。如果是HTTP協(xié)議,URL實(shí)例對(duì)象會(huì)返回HttpURLConnection對(duì)象。如果是FTP協(xié)議,URL實(shí)例對(duì)象會(huì)返回FtpURLConnection對(duì)象。

URLConnection類常用方法說(shuō)明如下:

void connect()

該方法用于與遠(yuǎn)程資源建立連接。如果尚未建立此連接,則打開指向此URL引用的資源鏈接。如果在連接已打開時(shí)調(diào)用connect方法(由值為true的connected字段指示),則忽略該調(diào)用。

void setRequestProperty(String key, String value)

該方法用于設(shè)置網(wǎng)絡(luò)資源請(qǐng)求屬性。Key參數(shù)為已知請(qǐng)求的關(guān)鍵字(例如,“Accept”),value是與key關(guān)聯(lián)的值。

void setReadTimeout(int timeout)

該方法用于設(shè)置讀取網(wǎng)絡(luò)資源數(shù)據(jù)超時(shí)時(shí)間(以毫秒為單位)。

void setConnectTimeout(int timeout)

該方法用于設(shè)置連接網(wǎng)絡(luò)資源的超時(shí)時(shí)間(以毫秒為單位)

InputStream getInputStream()

該方法用于返回從這個(gè)打開的連接讀取的輸入流。

HttpURLConnection類常用方法說(shuō)明如下:

int getResponseCode()

該方法從HTTP響應(yīng)消息獲取狀態(tài)代碼。返回200表示請(qǐng)求響應(yīng)成功,其它值表示請(qǐng)求響應(yīng)失敗。

void setRequestMethod(String method)

該方法設(shè)置HTTP請(qǐng)求方法之一:GET/POST/HEAD/OPTIONS/PUT/DELETE/TRACE。默認(rèn)是GET。

案例1:建立URLConnectionTest類,連接遠(yuǎn)程服務(wù)器,向服務(wù)器發(fā)送服務(wù)請(qǐng)求,并接收服務(wù)器的請(qǐng)求響應(yīng)數(shù)據(jù)。

該遠(yuǎn)程服務(wù)提供求兩數(shù)和服務(wù),客戶端向該服務(wù)發(fā)送服務(wù)請(qǐng)求,并向該服務(wù)提交兩個(gè)待求和的整數(shù),該服務(wù)返回求和結(jié)果。

在ip包下新建URLConnectionTest類。代碼如下:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

public class URLConnectionTest {

public static void main(String[] args) {

HttpURLConnection connection = null;

InputStream stream = null;

BufferedReader reader = null;

String server = “url&opone=30&optwo=60”;

try {

// 實(shí)例化URL對(duì)象

URL url = new URL(server);

// 通過(guò)URL對(duì)象打開一個(gè)連接,顯示轉(zhuǎn)換為httpURLConnection類

connection = (HttpURLConnection) url.openConnection();

// 設(shè)置連接方式:get

connection.setRequestMethod(“GET”);

// 設(shè)置連接遠(yuǎn)程服務(wù)的超時(shí)時(shí)間:15000毫秒

connection.setConnectTimeout(15000);

// 設(shè)置讀取遠(yuǎn)程服務(wù)返回的數(shù)據(jù)時(shí)間:60000毫秒

connection.setReadTimeout(60000);

// 建立連接,發(fā)送請(qǐng)求

connection.connect();

// 通過(guò)connection連接,獲取輸入流

if (connection.getResponseCode() == 200) {

// 從打開的連接獲取輸入流,接收返回?cái)?shù)據(jù)

stream = connection.getInputStream();

// 實(shí)例化BufferedReader對(duì)象,并指定字符集

reader = new BufferedReader(new InputStreamReader(stream, “UTF-8”));

// 實(shí)例化字符串生成器

StringBuffer sbf = new StringBuffer();

String temp = null;

// 從輸入流讀取數(shù)據(jù)

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

sbf.append(temp);

sbf.append(“\r\n”);

}

// 返回內(nèi)容輸出到控制臺(tái)

System.out.println(“遠(yuǎn)程服務(wù)返回的數(shù)據(jù):” + sbf.toString());

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

// 關(guān)閉資源

if (null != reader) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != stream) {

try {

stream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

// 關(guān)閉遠(yuǎn)程連接

connection.disconnect();

}

}

}

URLConnectionTest程序的主要功能是請(qǐng)求一個(gè)求兩數(shù)和的遠(yuǎn)程服務(wù),并向遠(yuǎn)程服務(wù)提交待求和的兩個(gè)整數(shù),遠(yuǎn)程服務(wù)計(jì)算兩數(shù)的和,并將計(jì)算結(jié)果返回給程序,程序?qū)⒂?jì)算結(jié)果輸出到控制臺(tái)。

程序使首先用URL對(duì)象定位和打開遠(yuǎn)程服務(wù),并應(yīng)用URL對(duì)象的openConnection()方法獲取HttpURLConnection實(shí)例對(duì)象。然后應(yīng)用HttpURLConnection實(shí)例對(duì)象分別設(shè)置遠(yuǎn)程服務(wù)的連接超時(shí)時(shí)間、服務(wù)響應(yīng)超時(shí)時(shí)間、讀取數(shù)據(jù)超時(shí)時(shí)間。再調(diào)用HttpURLConnection實(shí)例對(duì)象的connect()方法向遠(yuǎn)程服務(wù)發(fā)送請(qǐng)求,并調(diào)用HttpURLConnection實(shí)例對(duì)象的getResponseCode()方法判斷遠(yuǎn)程服務(wù)是否響應(yīng)成功,如果返回值是200,說(shuō)明服務(wù)器響應(yīng)成功。最后讀取遠(yuǎn)程服務(wù)返回的數(shù)據(jù),并將讀取的數(shù)據(jù)輸出到控制臺(tái)。

程序執(zhí)行結(jié)果如下圖所示:

Java編程:發(fā)送HTTP請(qǐng)求到服務(wù)器

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9596

    瀏覽量

    86968
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2983

    瀏覽量

    106499
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    516

    瀏覽量

    32284
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HTTP協(xié)議的運(yùn)作方式及請(qǐng)求/響應(yīng)的步驟

    基于HTTP的客戶/服務(wù)器模式的信息交換過(guò)程它分四個(gè)過(guò)程建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。
    的頭像 發(fā)表于 02-01 11:02 ?1700次閱讀
    <b class='flag-5'>HTTP</b>協(xié)議的運(yùn)作方式及<b class='flag-5'>請(qǐng)求</b>/響應(yīng)的步驟

    HTTP客戶端請(qǐng)求,服務(wù)器FIN在讀取所有數(shù)據(jù)之前

    1)PIC向http服務(wù)器發(fā)送請(qǐng)求2)服務(wù)器用數(shù)據(jù)響應(yīng),在PIC32堆棧緩沖區(qū)中PICThe數(shù)據(jù)的ack之后關(guān)閉連接,但在該堆棧迭代時(shí)關(guān)閉連
    發(fā)表于 09-23 07:01

    使用NodeMCU創(chuàng)建一個(gè)簡(jiǎn)單的HTTP服務(wù)器

    ,但當(dāng)我停止發(fā)送一兩分鐘的請(qǐng)求時(shí),服務(wù)器將以某種方式停止運(yùn)行 . 這意味著,當(dāng)我重新加載頁(yè)面nodeMCU沒有收到任何數(shù)據(jù)(并且不能返回任何數(shù)據(jù)) .a=0function receive(conn,pa...
    發(fā)表于 11-01 06:03

    如何通過(guò)http請(qǐng)求將值發(fā)送服務(wù)器?

    我正在使用 nodemcu 創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)器。我想通過(guò) http 請(qǐng)求將值發(fā)送服務(wù)器。我已成功創(chuàng)建
    發(fā)表于 02-27 06:48

    ESP32 Web服務(wù)器可以向外部Rest API發(fā)起HTTP請(qǐng)求嗎?

    我想知道以下是否可行...... 1)作為網(wǎng)絡(luò)服務(wù)器運(yùn)行的 ESP32 可以向外部 Rest API 發(fā)起/發(fā)出 HTTP 請(qǐng)求嗎?2) 我是否需要同時(shí)將其設(shè)置為服務(wù)器和客戶端,或者
    發(fā)表于 03-01 06:22

    GET如何才能請(qǐng)求多個(gè)服務(wù)器Masterslaves?

    大家好, \\*我是這個(gè)論壇的新人,所以我希望我 能在這里發(fā)帖另一個(gè)使用從我的主人(客戶端)從屬(服務(wù)器)的請(qǐng)求 GET但是我無(wú)法從我的主人建立多個(gè)
    發(fā)表于 05-30 09:03

    基于Java的游戲服務(wù)器開發(fā)技術(shù)體系詳解

    由 peter dong 于 星期五, 2018-06-15 11:19 發(fā)表 一、游戲服務(wù)器編程語(yǔ)言的選擇 所謂的游戲服務(wù)器編程語(yǔ)言其實(shí)有很多,基本上任何一種語(yǔ)言都可以作為游戲
    發(fā)表于 07-02 08:24 ?7408次閱讀

    Java程序設(shè)計(jì)教程之Java WEB服務(wù)器編程的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是Java程序設(shè)計(jì)教程之Java WEB服務(wù)器編程的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1 Java Web
    發(fā)表于 02-22 10:28 ?11次下載
    <b class='flag-5'>Java</b>程序設(shè)計(jì)教程之<b class='flag-5'>Java</b> WEB<b class='flag-5'>服務(wù)器</b>端<b class='flag-5'>編程</b>的詳細(xì)資料說(shuō)明

    單片機(jī)使用HTTP POST方式發(fā)送數(shù)據(jù)的資料和程序免費(fèi)下載

    HTTP請(qǐng)求是依賴TCP的,也就是在單片機(jī)上面,我們一樣可以使用,無(wú)非就是先發(fā)送一個(gè)http請(qǐng)求頭,再發(fā)
    發(fā)表于 07-18 17:38 ?38次下載
    單片機(jī)使用<b class='flag-5'>HTTP</b> POST方式<b class='flag-5'>發(fā)送</b>數(shù)據(jù)的資料和程序免費(fèi)下載

    HTTP的曲折:網(wǎng)絡(luò)請(qǐng)求層層封裝和終端拆分

    服務(wù)器的地址進(jìn)行查詢,域服務(wù)器將要查詢的域名的解析服務(wù)器地址返回給本地DNS,本地DNS去這里查詢就OK了。 瀏覽拿到服務(wù)器的IP地址后,
    發(fā)表于 05-07 16:42 ?1441次閱讀
    <b class='flag-5'>HTTP</b>的曲折:網(wǎng)絡(luò)<b class='flag-5'>請(qǐng)求</b><b class='flag-5'>到</b>層層封裝和終端拆分

    MCU沒有響應(yīng)服務(wù)器請(qǐng)求,NodeMCU HTTP服務(wù)器停止響應(yīng)

    ,但當(dāng)我停止發(fā)送一兩分鐘的請(qǐng)求時(shí),服務(wù)器將以某種方式停止運(yùn)行 . 這意味著,當(dāng)我重新加載頁(yè)面nodeMCU沒有收到任何數(shù)據(jù)(并且不能返回任何數(shù)據(jù)) .a=0function receive(conn,pa...
    發(fā)表于 10-25 18:21 ?11次下載
    MCU沒有響應(yīng)<b class='flag-5'>服務(wù)器</b><b class='flag-5'>請(qǐng)求</b>,NodeMCU <b class='flag-5'>HTTP</b><b class='flag-5'>服務(wù)器</b>停止響應(yīng)

    HTTP應(yīng)用——上傳(POST)數(shù)據(jù)服務(wù)器,從服務(wù)器下載(GET)文件報(bào)文

    前言HTTP協(xié)議是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上,傳輸端口一般為80。它指定了客戶端可能發(fā)送服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。
    發(fā)表于 12-06 11:21 ?7次下載
    <b class='flag-5'>HTTP</b>應(yīng)用——上傳(POST)數(shù)據(jù)<b class='flag-5'>到</b><b class='flag-5'>服務(wù)器</b>,從<b class='flag-5'>服務(wù)器</b>下載(GET)文件報(bào)文

    HTTP服務(wù)器項(xiàng)目實(shí)現(xiàn)介紹

    項(xiàng)目介紹 本項(xiàng)目實(shí)現(xiàn)的是一個(gè)HTTP服務(wù)器,項(xiàng)目中將會(huì)通過(guò)基本的網(wǎng)絡(luò)套接字讀取客戶端發(fā)來(lái)的HTTP請(qǐng)求并進(jìn)行分析,最終構(gòu)建HTTP響應(yīng)并返回
    的頭像 發(fā)表于 11-08 16:54 ?1108次閱讀
    <b class='flag-5'>HTTP</b><b class='flag-5'>服務(wù)器</b>項(xiàng)目實(shí)現(xiàn)介紹

    使用NS1串口服務(wù)器HTTP模式上傳服務(wù)器數(shù)據(jù)

    HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)之上。瀏覽作為HTTP客戶端通過(guò)URL向HTTP服務(wù)端即W
    的頭像 發(fā)表于 08-30 12:36 ?741次閱讀
    使用NS1串口<b class='flag-5'>服務(wù)器</b><b class='flag-5'>HTTP</b>模式上傳<b class='flag-5'>服務(wù)器</b>數(shù)據(jù)

    服務(wù)器如何處理 HTTP 請(qǐng)求

    服務(wù)器處理HTTP請(qǐng)求的過(guò)程是一個(gè)有序且復(fù)雜的流程,通常涉及多個(gè)步驟。以下是服務(wù)器處理HTTP請(qǐng)求
    的頭像 發(fā)表于 12-30 09:37 ?480次閱讀