13
Développer sur Android Android Lab Test www.AndroidLabTest.com Facebook Par Bruno Delb www.youtube.com/androidlabtest www.twitter.com/brunodelb | www.facebook.com/brunodelb | blog.brunodelb.com www.facebook.com/Androidlabtest Youtube Site officiel Leçon : Lecture HTTP

Android Lab Test : La connectivité réseau avec HTTP (français)

Embed Size (px)

Citation preview

Page 1: Android Lab Test : La connectivité réseau avec HTTP (français)

Développer sur AndroidAndroid Lab Test

www.AndroidLabTest.com

Face

bo

ok

Par Bruno Delb

www.youtube.com/androidlabtest

www.twitter.com/brunodelb | www.facebook.com/brunodelb | blog.brunodelb.com

www.facebook.com/Androidlabtest

You

tub

e

Site

off

icie

l

Leçon : Lecture HTTP

Page 2: Android Lab Test : La connectivité réseau avec HTTP (français)

Lecture HTTP

• Dans cette leçon, vous allez apprendre à effectuer une

requête HTTP sur un serveur Web.

• Pour cela, vous allez utiliser le DefaultHttpClient,

HttpGet / HttpPost et un InputStream.

Page 3: Android Lab Test : La connectivité réseau avec HTTP (français)

Lecture HTTP

• Pour effectuer une requête de type GET, utilisez la classe HttpGet :

HttpGet http = new HttpGet (new URI (url));

• Pour effectuer une requête de type POST, utilisez la classe HttpPost :

HttpPost http = new HttpPost (new URI (url));

• Pour ajouter un entête HTTP, utilisez la méthode addHeader() :

http.addHeader("pragma","no-cache");

Page 4: Android Lab Test : La connectivité réseau avec HTTP (français)

Lecture HTTP

• Pour ajouter les données, utilisez un objet List <NameValuePair> pour les stocker puis appelez la méthode setEntity :

http.setEntity(new UrlEncodedFormEntity (headers, HTTP.UTF_8));

• Pour exécuter la requête HTTP, utilisez la méthode execute() :

DefaultHttpClient httpClient = new DefaultHttpClient();HttpResponse httpResponse = httpClient.execute(http);

• Pour lire les données retournées par le serveur, utilisez un InputStream :

InputStream inputStream = httpResponse.getEntity().getContent();

Page 5: Android Lab Test : La connectivité réseau avec HTTP (français)

Lecture HTTP

• Pour lire le flux InputStream, utilisez un InputStreamReader :

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

• Lisez les données ligne par ligne grâce à un BufferedReader :

BufferedReader bufferedReader = new BufferedReader (inputStreamReader);

StringBuilder stringBuilder = new StringBuilder();

String line;

while ((line = bufferedReader.readLine()) != null) {

stringBuilder.append(line).append("\n");

}

Page 6: Android Lab Test : La connectivité réseau avec HTTP (français)

Lecture HTTP

• Il faut ensuite fermer le InputStream :

inputStream.close();

• Le texte lu se trouve dans le StringBuilder :

String html = stringBuilder.toString();

Page 7: Android Lab Test : La connectivité réseau avec HTTP (français)

Layout main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="URL" />

<EditText

android:id="@+id/et_url"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:ems="10"

android:text="http://www.google.com" />

Page 8: Android Lab Test : La connectivité réseau avec HTTP (français)

Layout main.xml

<Button

android:id="@+id/btnDownload"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Download" />

<EditText

android:id="@+id/et_output"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:ems="10" />

</LinearLayout>

Page 9: Android Lab Test : La connectivité réseau avec HTTP (français)

Fichier Main.java

public class Main extends Activity {

EditText et_output;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

et_output = (EditText)findViewById (R.id.et_output);

Button btnDownload = (Button)findViewById (R.id.btnDownload);

btnDownload.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

EditText et_url = (EditText)findViewById (R.id.et_url);

et_output.setText (getURL ("" + et_url.getText(), null));

}

});

}

Page 10: Android Lab Test : La connectivité réseau avec HTTP (français)

Fichier Main.java

public String getURL (String url, List <NameValuePair> headers) {

try {

HttpGet httpGet = new HttpGet (new URI (url));

httpGet.addHeader("pragma","no-cache");

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpResponse httpResponse = httpClient.execute(httpGet);

InputStream inputStream = httpResponse.getEntity().getContent();

return inputStreamToString (inputStream);

} catch (Exception e) {

Toast.makeText(this, e.getMessage(), 5000).show();

}

return "";

}

Page 11: Android Lab Test : La connectivité réseau avec HTTP (français)

Fichier Main.java

public String inputStreamToString (InputStream inputStream) {

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

BufferedReader bufferedReader = new BufferedReader (inputStreamReader);

StringBuilder stringBuilder = new StringBuilder();

try {

String line;

while ((line = bufferedReader.readLine()) != null) {

stringBuilder.append(line).append("\n");

}

inputStream.close();

} catch (IOException e) {

}

return stringBuilder.toString();

}

}

Page 12: Android Lab Test : La connectivité réseau avec HTTP (français)

Testez sur votre mobile

Network_Http

Page 13: Android Lab Test : La connectivité réseau avec HTTP (français)

Retrouvez-moi sur ma chaîne AndroidLabTest …

Sur ma chaîne Youtubehttps://www.youtube.com/user/mobiledevlabtest

Qui suis-je ?

Bruno Delb,

auteur du 1er livre francophone de développement d’application Java sur mobile (2002),

développeur d’applications mobiles & sociales,

parlez-moi de vos projets.

Et bien sûr sur mon site Web :http://blog.brunodelb.com