關于對發送HTTP請求以及解析服務器返回的數據操作的提取到一個公共類中進行封裝

創建一個名為HttpUtil的類并提供名為sendHttpRequest靜態方法.
相關代碼如下:
package?com.hzy.networktest;

import?java.io.BufferedReader;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.net.HttpURLConnection;
import?java.net.URL;



public?class?HttpUtil?{
public?static?void?sendHttpRequest(final?String?address,final?HttpCallbackListener?listener){
new?Thread(new?Runnable()?{
public?void?run()?{




HttpURLConnection?connection=null;
try?{
URL?url=new?URL(address);
connection=(HttpURLConnection)?url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoInput(true);
connection.setDoOutput(true);
InputStream?in=connection.getInputStream();
BufferedReader?reader=new?BufferedReader(new?InputStreamReader(in));
StringBuilder?response=new?StringBuilder();
String?line;
while((line=reader.readLine())!=null){
response.append(line);
}
if(listener!=null){
listener.onFinish(response.toString());
}


}?catch?(Exception?e)?{
//?TODO:?handle?exception
if(listener!=null){
listener.onError(e);
}
}finally?{
if(connection!=null){
connection.disconnect();
}
}


}
}).start();
}
}


以后每當需要發起一條HTTP請求的時候可以簡化為以下寫法:
String address="http://www.*******";//(輸入相應的網址或者其他的類型為URL的資源地址)
String response=HttpUtil.sendHttpRequest(address,new HttpCallbackListener){
//重寫onFinish()
public void onFinish(string response){
//在這里根據返回的內容執行具體的邏輯
}
//重寫onError()
public void onError(Exception e){
//在這里對異常情況進行處理
}

};
希望我們在學習的過程中多留意這些常用功能的封裝,進而讓自己寫程度的過程更便捷


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457089.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457089.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457089.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初始化CSS

不同的瀏覽器默認樣式不一樣,所以容易出現兼容性問題,每次寫網頁時都應該都網頁的css或HTML標簽進行初始化 這樣可以節約代碼,節約網頁下載時間,是網頁內容更加簡潔, 大致需要初始化的地方有 H1-H4標簽,table標簽,文字大小,文字沒有鏈接,超鏈接樣式,DIV,居中,ol,ul,li,img等等的…

Day10-時間

UTC(世界協調時間):格林尼織天文時間 在中國來說是UTC8 DST(夏令時):是一種節約能源而人為規定時間制度,在夏季調快一個小時時間的表示形式: 1、時間戳 以整形或浮點型表示時間的一個以秒為單位的時間間隔 …

WebForm 分頁與組合查詢

1.封裝實體類 2.寫查詢方法 //SubjectData類 public List<Subject> Select(string name){List<Subject> list new List<Subject>();cmd.CommandText "select *from Subject where SubjectName like a ";cmd.Parameters.Clear();cmd.Parameters.A…

linux如何輸出當前時間,如何在linux下輸出當前時間

用localtime可直接分解出年月日時分秒QUOTE:struct tm *ptm;long ts;int y,m,d,h,n,s;ts time(NULL);ptm localtime(&ts);y ptm->tm_year1900; //年m ptm->tm_mon1; //月d ptm->tm_mday; //日h ptm->tm_hour; //時n ptm->tm_min; //分s ptm->tm_…

node.js簡單爬蟲

這里假設你已經安裝好node.js和npm&#xff0c;如果沒有安裝&#xff0c;請參閱其他教程安裝。 配置首先是來配置package.json文件&#xff0c;這里使用express,request和cheerio。package.json如下&#xff1a; {"name": "node-scrape","version&quo…

Day11-遞歸性能測試

import time time.clock() sum 0 for i in range (1000000000):sumi print(time.clock()) 慎用 慎用 慎用

關于在新建的package中用SetContentView()函數時無法找到已創建的R.layout的布局文件的的問題的解決辦法

問題描述如下&#xff1a; 解決途徑&#xff1a;是在導入包的過程中&#xff0c;錯誤的將系統自動將Android.R這個包導入最終導致用setContenView()加載布局時只能顯示系統自帶的布局&#xff0c;無法顯示自己已經創建的布局。只需將相應活動中導入的Android.R包刪除&#xff0…

Struts2入門(二)——配置攔截器

一、前言 之前便了解過&#xff0c;Struts 2的核心控制器是一個Filter過濾器&#xff0c;負責攔截所有的用戶請求&#xff0c;當用戶請求發送過來時&#xff0c;會去檢測struts.xml是否存在這個action&#xff0c;如果存在&#xff0c;服務器便會自動幫我們跳轉到指定的處理類中…

linux固態機械分區嗎,不再疑惑!實測數據后才知道固態硬盤究竟要不要分區

不再疑惑&#xff01;實測數據后才知道固態硬盤究竟要不要分區2019-12-10 20:52:00162點贊594收藏177評論前幾年的固態硬盤價格昂貴&#xff0c;一般用戶會選擇128G或256G的固態作為系統盤&#xff0c;由于單盤空間不大&#xff0c;一般都會配合機械硬盤使用&#xff0c;無需考…

關于無法加載已創建的布局文件的問題的解決方案以及已布局在對應的R文件中未生成相應ID的問題的解決

先來說下創建后的Layout布局文件在對應的R文件中不能生成相應的ID問題&#xff0c;一般情況下之所以出現這種問題是應為自己的res文件中有錯誤的文件&#xff1a;對應的是錯誤的文件格式名稱&#xff0c;以及錯誤的文件內容等。博主就遇到過為drawable文件起了一個非法的名稱&a…

安卓手機的后門控制工具SPADE

SPADE&#xff0c;一款安卓手機的后門控制工具&#xff0c;安全研究人員可以以此了解和研究安卓后門原理。 首先&#xff0c;我們從網站www.apk4fun.com下載apk文件&#xff0c;如ccleaner。然后&#xff0c;我們安裝spade git clone https://github.com/suraj-root/spade.git …

Day12-date time

import datetimedatetime比time高級了不少&#xff0c;可以理解為datetime基于time進行了封裝&#xff0c;提供了&#xff0c; 更為實用的函數&#xff0c;并且datetime模塊的接口更直觀更容易調用模塊中的類&#xff1a; datetime 同時又時間和日期 imedelta 主…

MySQL案例-open too many files,MyISAM與partition

-------------------------------------------------------------------------------------------------短文---------------------------------------------------------------------------------------------------------------長話短說~現象: error log中批量刷錯誤日志, 形…

關于異常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解決辦法

<span style"font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style"font-size:18px;">今天在寫一個app時&#xff0c;當實現從網絡上獲取圖片資源&#xff0c;發送HTTPURLConnection的時候拋出這樣…

linux網卡有很多error,教你設置win7系統虛擬機安裝linux提示network error的解決方法...

很多朋友在使用電腦的過程中&#xff0c;會發現win7系統虛擬機安裝linux提示network error的現象&#xff0c;當遇到win7系統虛擬機安裝linux提示network error的問題&#xff0c;我們要怎么解決呢&#xff1f;如今還有很多用戶不知道如何處理win7系統虛擬機安裝linux提示netwo…

codevs2171 棋盤覆蓋

題目描述 Description給出一張n*n(n<100)的國際象棋棋盤&#xff0c;其中被刪除了一些點&#xff0c;問可以使用多少1*2的多米諾骨牌進行掩蓋。 輸入描述 Input Description第一行為n&#xff0c;m&#xff08;表示有m個刪除的格子&#xff09;第二行到m1行為x,y&#xff0c…

Day13-日歷模塊

import calendar日歷模塊 #使用#返回制定歿年某月日歷 print(calendar.month(2019,3)) #返回指定年份的日歷 print(calendar.calendar(2019)) #判斷閏年返回True 或者Flase print(calendar.isleap(2000)) #返回某個月的weekd的第一天和這個月所有的天數 print(calendar.monthra…

關于eclipse項目紅色感嘆號的解決辦法

在網上找到了解決辦法&#xff0c;詳見&#xff1a;http://jingyan.baidu.com/article/ea24bc3986f7b0da62b33188.html

linux模擬網絡延遲,使用Nistnet搭建網絡延遲模擬設備 (network delay simulator)

mknod /dev/hitbox c 62 0mknod /dev/nistnet c 62 1chown root /dev/hitboxchown root /dev/nistnetmknod /dev/mungebox c 63 0chown root /dev/mungeboxmknod /dev/spybox c 64 0chown root /dev/spyboxmodprobe nistnet可以將這個放到/etc/rc.local中&#xff0c;以便重啟后…