0
Tải bản đầy đủ (.pdf) (169 trang)

Tải dữ liệu dạng text thông qua HTTP

Một phần của tài liệu BÀI GIẢNG PHÁT TRIỂN ỨNG DỤNG CHO THIẾT BỊ DI ĐỘNG HỒ THỊ THẢO TRANG (Trang 146 -146 )

Tương tự như việc tải dữ liệu nhị phân ở trên, trong nhiều trường hợp ta cần tải dữ liệu dạng văn bản từ mạng (lấy dữ liệu từ các web service chẳng hạn). Ta cũng sẽ thực hiện thao tác này trong thread riêng, sử dụng AsyncTask và trả ra dữ liệu dạng String trước khi hiển thị lên màn hình (dạng Toast).

Đoạn mã tải và hiển dữ liệu văn bản trong thread riêng như sau:

private String DownloadText(String URL)

{ int BUFFER_SIZE = 2000; InputStream in = null; try { in = OpenHttpConnection(URL); } catch (IOException e) {

Log.d("NetworkingActivity", e.getLocalizedMessage()); return "";

}

InputStreamReader isr = new InputStreamReader(in); int charRead;

String str = "";

char[] inputBuffer = new char[BUFFER_SIZE]; try {

while ((charRead = isr.read(inputBuffer))>0) { //---convert the chars to a String---

String readString =

String.copyValueOf(inputBuffer, 0, charRead); str += readString;

inputBuffer = new char[BUFFER_SIZE]; }

in.close();

} catch (IOException e) {

Log.d("NetworkingActivity", e.getLocalizedMessage()); return "";

}

return str; }

private class DownloadTextTask extends AsyncTask<String, Void, String>

{

protected String doInBackground(String... urls) { return DownloadText(urls[0]);

}

@Override

protected void onPostExecute(String result) {

Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();

} }

Đoạn mã trên chỉ khác với việc tải ảnh trong phần trước ở phần đọc dữ liệu từ luồng nhập liệu trả về. Trong trường hợp dữ liệu văn bản, ta dùng lớp InputStreamReader và hàm read của nó để dọc lần lượt dữ liệu dạng char ra, sau đó gắn thêm dần vào string kết quả.

Cuối cùng ta chỉ cần gọi AsyncTask mới tạo ra này trong hàm onCreate của Activity để xem kết quả:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.main); //---download text--- new DownloadTextTask().execute( "http://iheartquotes.com/api/v1/random?max_characters=256&max_lin es=10"); }

Phát triển ứng dụng cho thiết bị di động Hồ Thị Thảo Trang

148

Một phần của tài liệu BÀI GIẢNG PHÁT TRIỂN ỨNG DỤNG CHO THIẾT BỊ DI ĐỘNG HỒ THỊ THẢO TRANG (Trang 146 -146 )

×