Upload
bruno-delb
View
44
Download
0
Embed Size (px)
Citation preview
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
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.
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");
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();
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");
}
Lecture HTTP
• Il faut ensuite fermer le InputStream :
inputStream.close();
• Le texte lu se trouve dans le StringBuilder :
String html = stringBuilder.toString();
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" />
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>
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));
}
});
}
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 "";
}
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();
}
}
Testez sur votre mobile
Network_Http
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