Android自定義網(wǎng)絡(luò)連接工具類HttpUtil
本文實(shí)例為大家分享了Android網(wǎng)絡(luò)連接工具類HttpUtil的使用方法,供大家參考,具體內(nèi)容如下
該工具實(shí)現(xiàn)了發(fā)送get和post請(qǐng)求,請(qǐng)求的結(jié)果以String字符串的形式返回,比較適合接收服務(wù)器端發(fā)送過(guò)來(lái)的JSON字符串?dāng)?shù)據(jù)
get方法適合從服務(wù)器端獲取數(shù)據(jù)
post方法適合發(fā)送數(shù)據(jù)到服務(wù)器端
使用的時(shí)候直接調(diào)用get或post方法就好
get方法傳遞一個(gè)url請(qǐng)求
post方法傳遞一個(gè)url請(qǐng)求和要發(fā)送到服務(wù)器端的數(shù)據(jù)params
接收數(shù)據(jù)后返回的是一個(gè)String字符串
HttpUtil.java
public class HttpUtil{
/**
* POST方法提交HTTP請(qǐng)求,返回請(qǐng)求的結(jié)果
*
* @param url
* @param params
* @return 請(qǐng)求結(jié)果
* @throws IOException
*/
public static String sendPost(String url, String params) throws IOException {
StringBuffer result = new StringBuffer();
// 創(chuàng)建URL對(duì)象
URL _url = new URL(url);
// 創(chuàng)建HTTP連接
/**
* 使用.openConnection()方法實(shí)例化一個(gè)URLConnection對(duì)象
* */
HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
// 以下設(shè)置網(wǎng)絡(luò)連接的相關(guān)參數(shù)
/* 使用POST方法進(jìn)行請(qǐng)求傳遞時(shí),必須定義setDoInput和setDoOutput方法 */
// 設(shè)置輸入可用
conn.setDoInput(true);
// 設(shè)置輸出可用
conn.setDoOutput(true);
// 設(shè)置不使用緩存
conn.setUseCaches(false);
// 設(shè)置連接超時(shí)的時(shí)間 - 5s
conn.setConnectTimeout(5000);
// 設(shè)置讀取超時(shí)的時(shí)間 - 5s
conn.setReadTimeout(5000);
// 設(shè)置HTTP請(qǐng)求的方法 - POST
conn.setRequestMethod("POST");
// 設(shè)置HTTP請(qǐng)求屬性 - 連接方式:保持
conn.setRequestProperty("Connection", "Keep-Alive");
// 設(shè)置HTTP請(qǐng)求屬性 - 字符集:UTF-8
conn.setRequestProperty("Charset", "UTF-8");
// 設(shè)置HTTP請(qǐng)求屬性 - 傳輸內(nèi)容的類型 - 簡(jiǎn)單表單
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
// 設(shè)置HTTP請(qǐng)求屬性 - 傳輸內(nèi)容的長(zhǎng)度
conn.setRequestProperty("Content-Length",
String.valueOf(params.length()));
// 設(shè)置HTTP請(qǐng)求屬性 - 用戶代理
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
// 發(fā)送參數(shù) ,采用字符流發(fā)送數(shù)據(jù)
PrintWriter pw = new PrintWriter(conn.getOutputStream());
pw.write(params);
pw.flush();
pw.close();
// 獲取返回的結(jié)果
if (200 == conn.getResponseCode()) {// 判斷狀態(tài)碼
// 讀取服務(wù)器返回的 結(jié)果 - 字符流
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 每次讀取一行
String line;
while((line = br.readLine()) != null){
result.append(line);
}
}
// 關(guān)閉HTTP連接
conn.disconnect();
return result.toString();
}
/**
* GET方法提交HTTP請(qǐng)求,返回請(qǐng)求的結(jié)果
* @param url
* @return 請(qǐng)求的結(jié)果
* @throws IOException
*/
public static String sendGet(String url) throws IOException {
StringBuffer result = new StringBuffer();
// 創(chuàng)建URL對(duì)象
URL _url = new URL(url);
// 創(chuàng)建HTTP連接
HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
// 設(shè)置網(wǎng)絡(luò)連接的相關(guān)參數(shù)
// 設(shè)置輸入可用
conn.setDoInput(true);
// 設(shè)置輸出可用
conn.setDoOutput(true);
// 設(shè)置不使用緩存
conn.setUseCaches(false);
// 設(shè)置連接超時(shí)的時(shí)間 - 5s
conn.setConnectTimeout(5000);
// 設(shè)置讀取超時(shí)的時(shí)間 - 5s
conn.setReadTimeout(5000);
// 設(shè)置HTTP請(qǐng)求的方法 - GET
conn.setRequestMethod("GET");
// 設(shè)置HTTP請(qǐng)求屬性 - 連接方式:保持
conn.setRequestProperty("Connection", "Keep-Alive");
// 設(shè)置HTTP請(qǐng)求屬性 - 字符集:UTF-8
conn.setRequestProperty("Charset", "UTF-8");
// 設(shè)置HTTP請(qǐng)求屬性 - 用戶代理
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
// 獲取返回的結(jié)果
if (200 == conn.getResponseCode()) {// 判斷狀態(tài)碼
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
// 每次讀取一行
String line;
while((line = br.readLine()) != null){
result.append(line);
}
}
// 關(guān)閉HTTP連接
conn.disconnect();
return result.toString();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 超實(shí)用的android網(wǎng)絡(luò)工具類
- Android網(wǎng)絡(luò)工具類NetworkUtils詳解
- Android開(kāi)發(fā)之超實(shí)用的系統(tǒng)管理工具類【SD卡,網(wǎng)絡(luò),uri,屏幕,網(wǎng)絡(luò),軟鍵盤,文本,進(jìn)程等】
- Android開(kāi)發(fā)中4個(gè)常用的工具類【Toast、SharedPreferences、網(wǎng)絡(luò)及屏幕操作】
- android實(shí)用工具類分享(獲取內(nèi)存/檢查網(wǎng)絡(luò)/屏幕高度/手機(jī)分辨率)
- Android檢查網(wǎng)絡(luò)狀態(tài)工具類詳解
相關(guān)文章
Android進(jìn)階事件分發(fā)機(jī)制解決事件沖突
這篇文章主要為大家介紹了Android進(jìn)階事件分發(fā)機(jī)制解決事件沖突過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android實(shí)現(xiàn)輪播圖無(wú)限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)輪播圖無(wú)限循環(huán)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
一些有效的Android啟動(dòng)優(yōu)化策略分享
在當(dāng)今激烈競(jìng)爭(zhēng)的移動(dòng)應(yīng)用市場(chǎng),應(yīng)用的啟動(dòng)速度直接影響著用戶的第一印象和滿意度,Android的啟動(dòng)優(yōu)化是開(kāi)發(fā)者必須關(guān)注的關(guān)鍵領(lǐng)域,本文將詳細(xì)介紹一些強(qiáng)大有效的Android啟動(dòng)優(yōu)化策略,幫助你優(yōu)化應(yīng)用的啟動(dòng)過(guò)程,為用戶創(chuàng)造更出色的體驗(yàn),需要的朋友可以參考下2023-08-08
Android實(shí)現(xiàn)IP地址輸入框的方法示例代碼
輸入框是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常遇到的一個(gè)控件,如果更好的控制輸入框是對(duì)用戶體驗(yàn)很重要的一步,所以下面這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)IP輸入框的相關(guān)資料,需要的朋友可以參考下。2017-10-10
Android布局加載之LayoutInflater示例詳解
這篇文章主要介紹了Android布局加載之LayoutInflater的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
Android仿抖音右滑清屏左滑列表功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android仿抖音右滑清屏左滑列表功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

