Android自定義網(wǎng)絡(luò)連接工具類HttpUtil
本文實(shí)例為大家分享了Android網(wǎng)絡(luò)連接工具類HttpUtil的使用方法,供大家參考,具體內(nèi)容如下
該工具實(shí)現(xiàn)了發(fā)送get和post請求,請求的結(jié)果以String字符串的形式返回,比較適合接收服務(wù)器端發(fā)送過來的JSON字符串?dāng)?shù)據(jù)
get方法適合從服務(wù)器端獲取數(shù)據(jù)
post方法適合發(fā)送數(shù)據(jù)到服務(wù)器端
使用的時(shí)候直接調(diào)用get或post方法就好
get方法傳遞一個(gè)url請求
post方法傳遞一個(gè)url請求和要發(fā)送到服務(wù)器端的數(shù)據(jù)params
接收數(shù)據(jù)后返回的是一個(gè)String字符串
HttpUtil.java
public class HttpUtil{
/**
* POST方法提交HTTP請求,返回請求的結(jié)果
*
* @param url
* @param params
* @return 請求結(jié)果
* @throws IOException
*/
public static String sendPost(String url, String params) throws IOException {
StringBuffer result = new StringBuffer();
// 創(chuàng)建URL對象
URL _url = new URL(url);
// 創(chuàng)建HTTP連接
/**
* 使用.openConnection()方法實(shí)例化一個(gè)URLConnection對象
* */
HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
// 以下設(shè)置網(wǎng)絡(luò)連接的相關(guān)參數(shù)
/* 使用POST方法進(jìn)行請求傳遞時(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請求的方法 - POST
conn.setRequestMethod("POST");
// 設(shè)置HTTP請求屬性 - 連接方式:保持
conn.setRequestProperty("Connection", "Keep-Alive");
// 設(shè)置HTTP請求屬性 - 字符集:UTF-8
conn.setRequestProperty("Charset", "UTF-8");
// 設(shè)置HTTP請求屬性 - 傳輸內(nèi)容的類型 - 簡單表單
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
// 設(shè)置HTTP請求屬性 - 傳輸內(nèi)容的長度
conn.setRequestProperty("Content-Length",
String.valueOf(params.length()));
// 設(shè)置HTTP請求屬性 - 用戶代理
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請求,返回請求的結(jié)果
* @param url
* @return 請求的結(jié)果
* @throws IOException
*/
public static String sendGet(String url) throws IOException {
StringBuffer result = new StringBuffer();
// 創(chuàng)建URL對象
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請求的方法 - GET
conn.setRequestMethod("GET");
// 設(shè)置HTTP請求屬性 - 連接方式:保持
conn.setRequestProperty("Connection", "Keep-Alive");
// 設(shè)置HTTP請求屬性 - 字符集:UTF-8
conn.setRequestProperty("Charset", "UTF-8");
// 設(shè)置HTTP請求屬性 - 用戶代理
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();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 超實(shí)用的android網(wǎng)絡(luò)工具類
- Android網(wǎng)絡(luò)工具類NetworkUtils詳解
- Android開發(fā)之超實(shí)用的系統(tǒng)管理工具類【SD卡,網(wǎng)絡(luò),uri,屏幕,網(wǎng)絡(luò),軟鍵盤,文本,進(jìn)程等】
- Android開發(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ī)制解決事件沖突過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android實(shí)現(xiàn)輪播圖無限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)輪播圖無限循環(huán)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android實(shí)現(xiàn)IP地址輸入框的方法示例代碼
輸入框是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個(gè)控件,如果更好的控制輸入框是對用戶體驗(yàn)很重要的一步,所以下面這篇文章主要給大家介紹了關(guān)于Android如何實(shí)現(xiàn)IP輸入框的相關(guān)資料,需要的朋友可以參考下。2017-10-10
Android布局加載之LayoutInflater示例詳解
這篇文章主要介紹了Android布局加載之LayoutInflater的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03
Android仿抖音右滑清屏左滑列表功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android仿抖音右滑清屏左滑列表功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

