AndroidDisponible enHttpURLConnectionEtHttpClientLes interfaces peuvent être utilisées pour développerHTTPProcédure.Voici un résumé de mes études.
1. HttpURLConnectionInterface
Il faut d'abord être clair,HttpDans les communicationsPOSTEtGETDifférentes façons de demander.GETDes pages statiques sont disponibles,Vous pouvez également placer les paramètres surURLDerrière la chaîne,Passer au serveur.EtPOSTLes paramètres de la méthode sont placés dansHttpDemande en cours.Donc,,Avant la programmation,La méthode de demande utilisée doit d'abord être claire,Ensuite, sélectionnez la méthode de programmation appropriée en fonction de la méthode utilisée.
HttpURLConnectionEst hérité deURLConnectionCatégorie,Les deux sont des classes abstraites.Ses objets passent principalement parURLDeopenConnectionMéthode d'obtention.La méthode de création est indiquée dans le code suivant:
1.URL url = new URL("http://www.51cto.com/index.jsp?par=123456");
2. HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
Les propriétés demandées peuvent être définies de la manière suivante,Comme suit:
1. //Définir les flux d'entrée et de sortie
2. urlConn.setDoOutput(true);
3. urlConn.setDoInput(true);
4. //Définir le mode de demande comme suit:POST
5. urlConn.setRequestMethod("POST");
6. //POST La requête ne peut pas utiliser le cache
7. urlConn.setUseCaches(false);
8. //Fermer la connexion
9. urlConn.disConnection();
HttpURLConnectionUtilisation par défautGETComment, Par exemple, le code suivant montre :
1. //UtiliserHttpURLConnectionOuvrir la connexion
2.HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
3. // Obtenir ce qui est lu (Flow)
4.InputStreamReader in = new InputStreamReader(urlConn.getInputStream());
5. // Créer pour la sortie BufferedReader
6. BufferedReader buffer = new BufferedReader(in); 7. String inputLine = null;
8. // Utiliser des boucles pour lire les données obtenues
9. while (((inputLine = buffer.readLine()) != null))
10. {
11. // On en ajoute un après chaque ligne. "\n"On change de ligne.
12. resultData += inputLine + "\n";
13. }
14. //FermerInputStreamReader
15. in.close();
16. //FermerhttpConnexion
17. urlConn.disconnect();
Si nécessairePOSTComment,Oui.setRequestMethodParamètres.Les codes sont les suivants::
1.String httpUrl = "http://192.168.1.110:8080/httpget.jsp";
2. //Données obtenues
3. String resultData = "";
4. URL url = null;
5. try
6. {
7. //Construire unURLObjet
8. url = new URL(httpUrl);
9. }
10. catch (MalformedURLException e)
11. {
12. Log.e(DEBUG_TAG, "MalformedURLException");
13. }
14. if (url != null)
15. {
16. try
17. {
18. // UtiliserHttpURLConnectionOuvrir la connexion
19. HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
20. //Parce que c'estpostDemande, L'établissement doit être fixé à true
21. urlConn.setDoOutput(true);
22. urlConn.setDoInput(true);
23. // Set toPOSTComment
24. urlConn.setRequestMethod("POST");
25. // Post La requête ne peut pas utiliser le cache
26. urlConn.setUseCaches(false);
27. urlConn.setInstanceFollowRedirects(true);
28. // Configurer cette Connexion Content-type,Configurer commeapplication/x-www-form-urlencodedDe
29. urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
30. // Connexion,DepostUrl.openConnection() La configuration doit maintenant être connectTerminé avant,
31. // Notez queconnection.getOutputStream Se déroule implicitement connect.
32. urlConn.connect();
33. //DataOutputStreamFlow
34.DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
35. // Paramètres à télécharger
36.String content = "par=" + URLEncoder.encode("ABCDEFG", "gb2312");
37. // Écrire le contenu à télécharger dans le flux
38. out.writeBytes(content);
39. //Rafraîchir、Fermer
40. out.flush();
41. out.close();
2. HttpClientInterface
UtiliserApacheFourniHttpClient L'interface peut également fonctionner HTTPFonctionnement.
PourGETEtPOST Le fonctionnement de la méthode de demande est différent .GET Voici un exemple de code de fonctionnement pour la méthode: :
1. // httpAdresse
2.String httpUrl = "http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get";
3. //HttpGetObjet de connexion
4. HttpGet httpRequest = new HttpGet(httpUrl);
5. //AccèsHttpClientObjet
6. HttpClient httpclient = new DefaultHttpClient();
7. //DemandeHttpClient,AccèsHttpResponse
8.HttpResponse httpResponse = httpclient.execute(httpRequest);
9. //Demande acceptée
10.
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
11. {
12. // Obtient la chaîne retournée
13. String strResult = EntityUtils.toString(httpResponse.getEntity());
14. mTextView.setText(strResult);
15. }
16. else
17. {
18. mTextView.setText("Erreur de demande!");
19. }
20. }
UtiliserPOST Méthode de transfert des paramètres ,À utiliserNameValuePair Pour enregistrer les paramètres à passer .,En plus, Vous devez également définir le jeu de caractères utilisé .Les codes sont les suivants::
1. // httpAdresse
2. String httpUrl = "http://192.168.1.110:8080/httpget.jsp";
3. //HttpPostObjet de connexion
4. HttpPost httpRequest = new HttpPost(httpUrl);
5. //UtiliserNameValuePair Pour sauvegarder ce que vous souhaitez transmettre PostParamètres
6. List<NameValuePair> params = new ArrayList<NameValuePair>();
7. // Ajouter un paramètre à passer
8. params.add(new BasicNameValuePair("par", "HttpClient_android_Post"));
9. //Définir un jeu de caractères
10. HttpEntity httpentity = new UrlEncodedFormEntity(params, "gb2312");
11. //DemandehttpRequest
12. httpRequest.setEntity(httpentity);
13. // Obtenir par défaut HttpClient
14. HttpClient httpclient = new DefaultHttpClient();
15. //AccèsHttpResponse
16. HttpResponse httpResponse = httpclient.execute(httpRequest);
17. //HttpStatus.SC_OKIndique une connexion réussie
18.
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
19. {
20. // Obtient la chaîne retournée
21. String strResult = EntityUtils.toString(httpResponse.getEntity());
22. mTextView.setText(strResult);
23. }
24. else
25. {
26. mTextView.setText("Erreur de demande!");
27. }
28. }
HttpClientEn fait, oui.Java Fournir quelques encapsulations pour la méthode ,InHttpURLConnection Opérations de flux d'entrée et de sortie en , Est uniformément encapsulé dans cette interface HttpPost(HttpGet)EtHttpResponse,Voilà., Réduit la complexité des opérations .
En plus,En servicePOST Mode de transmission ,Codage des caractères requis.