Android之Http通訊HttpConnection
1.解析網站並顯示
因為要處理網頁讀取,需要開啟執行緒,並在UI上更新,則要使用handler
注意Handler匯入的是os包
下面是MainActivity
private WebView webView; private WebView webView; private Handler handler=new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http_url_connection); webView=(WebView)findViewById(R.id.webview); new HttpThread("http://www.baidu.com",handler,webView).start(); }
子執行緒類
public class HttpThread extends Thread { private String url=null; private Handler handler; private WebView webView; StringBuffer sb; public HttpThread(String url,Handler handler,WebView webView){ this.url=url; this.handler=handler; this.webView=webView; } @Override public void run() { try { //獲取URL物件 URL httpUrl=new URL(url); //通過URL物件獲取連線 HttpURLConnection conn= (HttpURLConnection) httpUrl.openConnection(); //設定 連線讀取時長 conn.setReadTimeout(5000); //設定以get形式請求 conn.setRequestMethod("GET"); //字串流 sb=new StringBuffer(); //獲得連線的位元組輸入流 InputStream is=conn.getInputStream(); //將位元組輸入流轉換為字元輸入流 InputStreamReader isr=new InputStreamReader(is); //載入到快取流中,只有快取流可以直接讀一行 BufferedReader reader=new BufferedReader(isr); String str; while ((str=reader.readLine())!=null){ sb.append(str); } //使用post(),在runable中更新UI handler.post(new Runnable() { @Override public void run() { webView.loadData(sb.toString(),"text/html;charset=utf-8",null); } }); } catch (Exception e) { e.printStackTrace(); } } }
2.解析圖片網址,先儲存在外部儲存中,在通過bitmap獲取到UI中
在MainActivity中開啟執行緒
下面的網址一定要是一個圖片網址,即字尾以,jpg或其他圖片格式顯示
new HttpThread("http://pic.sc.chinaz.com/files/pic/pic9/201512/apic17727.jpg",handler,imageView).start();
子執行緒類
public class HttpThread extends Thread { private String url=null; private Handler handler; private ImageView imageView; public HttpThread(String url,Handler handler,ImageView imageView){ this.url=url; this.handler=handler; this.imageView=imageView; } @Override public void run() { try { URL httpUrl=new URL(url); //通過URL物件獲取連線 HttpURLConnection conn= (HttpURLConnection) httpUrl.openConnection(); //設定 連線讀取時長 conn.setReadTimeout(5000); //設定以get形式請求 conn.setRequestMethod("GET"); //文件上只是寫著設定連線允許輸入,不知道是什麼意思 conn.setDoInput(true); InputStream in=conn.getInputStream(); FileOutputStream out=null; File downloadFile=null; Log.i("info","進入到HttpThread中"); String fileName=String.valueOf(System.currentTimeMillis()); //只有在SD卡狀態為MEDIA_MOUNTED時,/mmt/sdcard目錄才是可讀可寫的,並且可以建立目錄及檔案 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //獲取外部儲存路徑,外部儲存不一定是sd卡,還包括手機自帶的記憶體,內部儲存是指data/data/包名下的 File parent=Environment.getExternalStorageDirectory(); //在獲取的目錄下新建檔名為fileName的檔案 downloadFile=new File(parent,fileName); //檔案輸出流 out=new FileOutputStream(downloadFile); } byte[] b=new byte[2*1024]; int len; if(out!=null){ //通過位元組流的讀取方法,以陣列為快取 while((len=in.read(b))!=-1){ out.write(b,0,len); } } //通過指定sd卡圖片檔案路徑來獲取bitmap final Bitmap bitmap= BitmapFactory.decodeFile(downloadFile.getAbsolutePath()); handler.post(new Runnable() { @Override public void run() { Log.i("info","寫入成功"); imageView.setImageBitmap(bitmap); } }); } catch (Exception e) { e.printStackTrace(); } } }
上面獲取網頁圖片是先存到外部儲存中,然後在將圖片從外部儲存中取出來,當然可以直接通過網頁來獲取,下面的程式碼只是將獲取的方式從檔案改為了流
URL httpUrl=new URL(url);
HttpURLConnection connection=(HttpURLConnection)httpUrl.openConnection();
connection.setReadTimeout(5000);
connection.setRequestMethod("GET");
InputStream in=connection.getInputStream();
//通過獲取網上的輸入流,來將圖片傳給Bitmap
final Bitmap bitmap= BitmapFactory.decodeStream(in);
//同樣通過post更新UI
handler.post(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
相關推薦
Android之Http通訊HttpConnection
1.解析網站並顯示 因為要處理網頁讀取,需要開啟執行緒,並在UI上更新,則要使用handler 注意Handler匯入的是os包 下面是MainActivity private WebView webView; private WebView webView;
Android之Http通訊——4.Android HTTP請求方式:HttpClient
本節引言: 上節講了HttpURLConnection,本節就到HttpClient了,Apache給我們提供的HttpClient(簡單的Http客戶端),不過畢竟不是親兒子,HttpClient在API 21版本後就給Google棄用了,而我
Android之Http通信——1.初識Http協議
網頁 ip協議 作用 建立連接時 lin 是什麽 方式 設置 全部 Android之Http通信——1.初識Http協議 引言: 今天是六一兒童節,先在這裏給各位超齡兒童說聲節日快樂哈~( ╯□╰ ),小豬也象征性地給群裏的小朋友們派了
Android之Socket通訊
Android裡面使用Socket與伺服器之間進行通訊: 首先建立一個SocThread類 package com.junto.sockettest; import android.content.Context; import android.content.SharedPref
JAVA爬蟲初識之HTTP通訊機制
最近接觸爬蟲相關知識,將學習和網上了解到的一些東西記錄下來,以便以後需要。(刪除重新發一次) HTTP通訊機制 HTTP(HyperText Transfer Protocol)是一套計算機通過網路進行通訊的規則。HTTP是一種無狀態的協議(Web瀏覽器和W
Android之程序通訊——廣播
不同程序間的通訊,其實Android的四大元件都可以實現。 日常,我們用廣播,在一個獨立的app中使用的較多。或者是系統和app之間使用。 在兩個自定義的app之間,我們也寫個例子,表明廣播是很好用的!! 在這裡就自定義兩個app:BroadCastA(後面稱為A)、Bro
Android與伺服器端通訊方式(一)之HTTP、TCP、Socket
Android作為客戶端,與伺服器的通訊方式主要有兩種:一種是HTTP通訊,一種是Socket通訊。 一、HTTP、Socket簡介 HTTP通訊:即使用HTTP協議進行通訊,工作原理是客戶端向伺服器端傳送一條HTTP請求,伺服器收到之後先解析客戶
Android中的Http通訊(一)之Http協議基本知識
寫了這麼久的專案,幾乎每個專案都用到了網路請求,不對,是所有的專案。一直沒有對這一塊做過詳細的總結,今天結合一些網上的資料以及自己的理解,來談談Http。廢話不多說,直奔正題吧...... 我們如果想要真正的瞭解Http,我們必須要知道什麼是Http? 一、什麼是Http?
Android 網路通訊之HTTP請求通訊
Android網路通訊平臺支援還是比較豐富的,除了相容J2ME中的java.netapi外還提供了一下Android平臺獨有的類android.net這個Package。一種是GET方式,一種是POST方式。然後HttpClient的Get/Post方式。似乎更強大的是org.apache.http類,這個
android網路通訊之-Http(Android操作HTTP實現與伺服器通訊)
Android系統中本身是有下載機制的,比如瀏覽器使用的DownloadManager。可遺憾的是,DownloadManager只提供給瀏覽器使用,一般的應用程式沒法呼叫它。 另外,如果下載呼叫頻繁的話,使用DownloadManager其實是很沒有效率的做法。為了解決這些問題,我想我們最好的辦法
Python之tcp server模擬Http通訊
1.python tcp server程式碼: 1 import socket 2 3 4 def main(): 5 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6
Android HTTP通訊封裝(包括WebService的呼叫)
第一個物件: 該物件是呼叫WebService用的一個物件基類。 package Entity; import com.google.gson.Gson; import org.json.JSONObject; import java.lang.reflect.Field; impor
Spring Boot Http通訊資料之加解密
1、應用背景 Spring Boot開發基於restful型別的API,我們再處理JSON請求時通常使用@RequestBody和@ResponseBody註解, 針對HTTP JSON請求需要解密和返回的JSON資料我們經常需要對資料進行加密
Android元件化之元件通訊
Demo地址:https://github.com/751496032/ComponentDemo 本文是續上一篇Android元件化方案實踐與思考文章一些思考,主要是針對元件間通訊,比如: 每個元件如何初始化各自的資料 Activity間如何跳轉、Fragment例項
Android使用Http協議訪問網路——HttpConnection
本文轉載自:https://www.cnblogs.com/Liang-Blog/p/5760201.html 套路篇 使用HttpConnection訪問網路一般有如下的套路: 1.獲取到HttpConnection的例項,new出一個URL物件,並傳入目標的網址,然後呼叫一下open
Android之UDP協議通訊
最近在做的專案中用到了UDP協議來通訊,整理了一下,可以與PC端網路助手之間進行測試。下面將主要功能程式碼寫在下面供搭建參考: UDPSocketClientManage public class UDPSocketClientManage { // 伺服器IP
android進階3step2:Android App通訊——Https和Http通訊
需要了解的知識 X.509數字證書的結構與解析 計算機網路:這是一份全面& 詳細 HTTP知識講解 Https 實戰 • 主要用到的API介紹 – HttpsURLConnection (HttpURLConn
Android之IPC程序通訊方案適用場景總結
IPC是 Inter-Proscess Communication的縮寫,含義為程序間的通訊或者跨程序通訊,是指兩個程序之間進行資料交換的過程。 名稱 優點 缺點 適用場景 Bundle 簡單易用 只能傳輸Bundle支援的資料型別 四大元件間的
我的Android NDK之旅(四),android串列埠通訊-mac+串列埠除錯工具
一些關於串列埠的知識 什麼是串列埠 串列埠是計算機上一種非常通用裝置通訊的協議,不要與通用序列匯流排Universal Serial Bus(USB)混淆。大多數計算機包含兩個基於RS232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議;很多GP
快速Android開發系列通訊篇之EventBus
先吐槽一下部落格園的MarkDown編輯器,推出的時候還很高興部落格園支援MarkDown了,試用了下發現支援不完善就沒用了,這次這篇是在其他編輯器下寫的,複製過來後發現。。太爛了。怎麼著作為一個技術部落格社群,對程式碼的支援應該完善一下吧,`行內程式碼塊`不支援就算了,程式碼段內還不能有空行,一有空行就識別