+ All Categories
Home > Documents > Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze...

Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze...

Date post: 26-Mar-2015
Category:
Upload: maria-clark
View: 214 times
Download: 0 times
Share this document with a friend
Popular Tags:
17
Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna
Transcript
Page 1: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Programming with Android: Network Operations

Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione

Università di Bologna

Page 2: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android 2

Outline

Network operations: Download Manager

Network operations: HTTP Responses

Network operations: HTTP Requests

Network operations: HTTP Client

Network operations: WebView and WebSettings

Network operations: WebView

Network operations: TCP/UDP Sockets

Page 3: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 3

Android: WebView Usage

WebView A View that displays web pages, including simple browsing methods (history, zoom in/out/ search, etc).WebView A View that displays web pages, including simple browsing methods (history, zoom in/out/ search, etc).

Implemented by the WebView class

public WebView(Context contex)

Main methods:

public void loadUrl(String url) load the HTML page at url

public void loadData(String data, String mimeType, string encoding) load the HTML page contained in data

Page 4: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 4

Android: WebView Usage

Page 5: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 5

Android: WebView Usage

By default, the WebView UI does not include any navigation button …However, callbacks methods are defined:

public void goBack()

public void goForward()

public void reload()

public void clearHistory()

Page 6: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 6

Android: WebView Usage

It is possible to modify the visualization options of a WebView through the WebSettings class.

public WebSettings getSettings()

Some options:

void setJavaScriptEnabled(boolean)

void setBuildInZoomControls(boolean)

void setDefaultFontSize(int)

Page 7: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 7

Android: HTTP Classes

HTTP (HyperText Tranfer Protocol): Network protocol for exchange/transfer data (hypertext) HTTP (HyperText Tranfer Protocol): Network protocol for exchange/transfer data (hypertext)

Request/Resonse Communication Model

HEAD GET POST PUT DELETE TRACE CONNECT

MAIN COMMANDS

Page 8: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 8

Android: HTTP Classes

HttpClient Interface for an HTTP client

HttpRequest Interface for an HTTP request

HttpResponse Interface for an HTTP response

ResponseHandler<T> Handler that creates an object <T> from an HTTP Response

HttpContext Context of the HTTP Request (request+response+data)

Page 9: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 9

Android: HTTP Classes

HttpClient Interface for an HTTP client(DefaultHttpClient implementation of an HttpClient)

HttpClient client=new DefaultHttpClient();

Main method:

The public method execute(…) performs an HTTP request, and allows to process an HTTP reply from the HTTP server.

abstract<T> T execute(HttpUriRequest request, ResponseHandler <T> responseHandler)

One of the signature of execute()

Page 10: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 10

Android: HTTP Classes

HttpRequest Interface for an HTTP request

Two implementations:

HttpGet implements the GET HTTP method

HttpPost Implements the POST HTTP method

HttpGet request=new HttpGet(String address);

HttpGet request=new HttpGet(URI address);

Page 11: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 11

Android: HTTP Classes

ResponseHandler <T> Interface for creating an object <T> from an HttpResponse, obtained after having executed an HttpRequest.

public abstract T handleResponse (HttpResponse res)

Method to override

Generally, <T> is a String (HTML code) …

Page 12: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 12

Android: HTTP Classes

HttpPost Implements the POST HTTP method

List<NomeValuePair> par=new ArrayList<NomeValuePair>()par.add(new BasicNameValuePair(“name”,”Marco”);HttpEntity postEntity=new UrlEncodedFormEntity(par);request.setEntity(postEntity);

Encapsulating a parameter …

HttpPost request=new HttpPost(String address);

HttpPost request=new HttpPost(URI address);

Page 13: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 13

Android: HTTP Classes

Basic HTTPClient Request-Response Application …

HttpClient client=new DefaultHttpClient();HttpGet request=new HttpGet();request.setURI(“http//www.cs.unibo.it”);try { client.execute(request, responseHandler);} catch (ClientProtocolException e) {

e.printStackTrace();} catch (IOException e) {

e.printStackTrace();}

Page 14: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 14

Android: HTTP Classes

Basic HTTPClient Request-Response Application …

class MyResponseHandler implements ResponseHandler<String> {

@Overridepublic String handleResponse(HttpResponse response) { InputStream

content=response.getEntity().getContent();byte[] buffer=new byte[1024];int numRead=0;ByteArrayOutputStream stream=new

ByteArrayOutputStream();while ((numRead=content.read(buffer))!=-1)

stream.write(buffer, 0, numRead);content.close();String result=new String(stream.toByteArray());return result;

} }

Page 15: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 15

Android: Download Manager

DownloadManager System service that handles long-run HTTP downloads.DownloadManager System service that handles long-run HTTP downloads.

DownloadManager dm=(DownloadManager) getSystemService(DOWNLOAD_SERVICE);

The client can specify the file to be downloaded through an URI (path).

Download is conducted in background (with retries) Broadcast Intent action is sent to notify when the

download completes.

Page 16: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 16

Android: Download Manager

The Request class is used to specify a download request to the Download Manager.

long enqueue(DownloadManager.Request)

Cursor query(DownloadManager.Query)

ParcelFileDescriptor openDownloadedFile(long)

Main methods of the DownloadManager

Page 17: Programming with Android: Network Operations Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.

Luca Bedogni, Marco Di Felice – Network programming with Android(c) Luca Bedogni 2012 17

Android: TCP/IP Communication

TCP/UDP Communication Android applications can use java.net.Socket facilities.TCP/UDP Communication Android applications can use java.net.Socket facilities.

Use socket-based programming like in Java …

Class DatagramSocket UDP Socket

Classes Socket/ServerSocket TCP socket

Read/Write on Sockets through InputStream/OutputStream


Recommended