Android httpUrlConnection的基本使用
今天,簡單講講Android HttpUrlConnection的使用。
?
我在項目里是使用OK HTTP的,但是最近發現使用OK HTTP好多不知道的問題,感覺自己對基本的網絡請求不是很好的掌握,所以學習一下基本的網絡請求類:HttpUrlConnection。
一,HttpURLconnection的介紹
在Android開發中網絡請求是最常用的操作之一, Android SDK中對HTTP(超文本傳輸協議)也提供了很好的支持,這里包括兩種接口:?
1、標準Java接口(java.NET) —-HttpURLConnection,可以實現簡單的基于URL請求、響應功能;?
2、Apache接口(org.appache.http)—-HttpClient,使用起來更方面更強大。
但在android API23的SDK中Google將HttpClient移除了。Google建議使用httpURLconnection進行網絡訪問操作。
HttpURLconnection是基于http協議的,支持get,post,put,delete等各種請求方式,最常用的就是get和post,下面針對這兩種請求方式進行講解。
?
一.get請求
new Thread(new Runnable() {@Overridepublic void run() {try {String url = "https://www.baidu.com/";URL url = new URL(url);//得到connection對象。HttpURLConnection connection = (HttpURLConnection) url.openConnection();//設置請求方式connection.setRequestMethod("GET");//連接connection.connect();//得到響應碼int responseCode = connection.getResponseCode();if(responseCode == HttpURLConnection.HTTP_OK){//得到響應流InputStream inputStream = connection.getInputStream();//將響應流轉換成字符串String result = is2String(inputStream);//將流轉換為字符串。Log.d("kwwl","result============="+result);}} catch (Exception e) {e.printStackTrace();}} }).start(); public String is2String(InputStream is){//連接后,創建一個輸入流來讀取responseBufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is,"utf-8"));String line = "";StringBuilder stringBuilder = new StringBuilder();String response = "";//每次讀取一行,若非空則添加至 stringBuilderwhile((line = bufferedReader.readLine()) != null){stringBuilder.append(line);}//讀取所有的數據后,賦值給 responseString response = stringBuilder.toString().trim(); return response }get請求的使用方法如上。如果需要傳遞參數,則直接把參數拼接到url后面,其他完全相同,如下:
String url = "https://www.baidu.com/?userName=zhangsan&password=123456";注意點:?
1,url與參數之間用?隔開。?
2,鍵值對中鍵與值用=連接。?
3,兩個鍵值對之間用&連接
分析:?
1, 使用connection.setRequestMethod(“GET”);設置請求方式。?
2, 使用connection.connect();連接網絡。請求行,請求頭的設置必須放在網絡連接前。?
3, connection.getInputStream()只是得到一個流對象,并不是數據,不過我們可以從流中讀出數據,從流中讀取數據的操作必須放在子線程。?
4, connection.getInputStream()得到一個流對象,從這個流對象中只能讀取一次數據,第二次讀取時將會得到空數據。
?
?
二.POST 請求
new Thread(new Runnable() {@Overridepublic void run() {try {URL url = new URL(getUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");//設置請求方式為POSTconnection.setDoOutput(true);//允許寫出connection.setDoInput(true);//允許讀入connection.setUseCaches(false);//不使用緩存connection.connect();//連接int responseCode = connection.getResponseCode();if(responseCode == HttpURLConnection.HTTP_OK){InputStream inputStream = connection.getInputStream();String result = is2String(inputStream);//將流轉換為字符串。Log.d("kwwl","result============="+result);}} catch (Exception e) {e.printStackTrace();}} }).start();注:post請求與get請求有很多相似,只是在連接之前多了一些設置,兩者可以對比學習使用。
三。POST傳遞鍵值對
new Thread(new Runnable() {@Overridepublic void run() {try {URL url = new URL(getUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST"); connection.setDoOutput(true);connection.setDoInput(true);connection.setUseCaches(false);connection.connect();String body = "userName=zhangsan&password=123456";BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8"));writer.write(body);writer.close();int responseCode = connection.getResponseCode();if(responseCode == HttpURLConnection.HTTP_OK){InputStream inputStream = connection.getInputStream();String result = is2String(inputStream);//將流轉換為字符串。Log.d("kwwl","result============="+result);}} catch (Exception e) {e.printStackTrace();}} }).start();分析:?
1,post方式傳遞參數的本質是:從連接中得到一個輸出流,通過輸出流把數據寫到服務器。?
2,數據的拼接采用鍵值對格式,鍵與值之間用=連接。每個鍵值對之間用&連接。
?
參考文章:https://blog.csdn.net/fightingXia/article/details/71775516
?
在這里,和一些噴子說一下,我寫這些博客只是為了記錄自己的知識,沒有從其他看的人那里得到什么好處。如果不喜歡,就不要看。不要留一些讓我不舒服的評論。又沒有人強迫你們來看我的博客。
?
Android httpUrlConnection的基本使用就講完了。
?
就這么簡單。
總結
以上是生活随笔為你收集整理的Android httpUrlConnection的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android okHttp上传图片
- 下一篇: Android 极广推送接入