Http communication for Android Network Programming

Programmeur Xiaogu 2021-11-25 17:16:58
http communication android network programming

  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.

版权声明
本文为[Programmeur Xiaogu]所创,转载请带上原文链接,感谢
https://javamana.com/2021/11/20211125171540540e.html

  1. 应急响应入门之Linux分析排查
  2. Twitter如何升级Hadoop+Kafka架构实现实时处理数十亿个事件?
  3. 引人入胜,实战讲解“Java性能调优六大工具”之linux命令行工具
  4. docker 查看实时日志
  5. JFrog Artifactory 7.27 上传应用到私服和从maven私服下载制品
  6. Ces protocoles http simples
  7. [including thesis + source code] JavaWeb hospital triage registration management system SSH [package running successfully]
  8. Java初学者,想知道如何用if语法当条件成立后什么都不执行,否则执行动作
  9. 体验.NET Core使用IKVM对接Java
  10. 深入JavaScript高级语法-coderwhy
  11. 排序算法--Java实例/原理
  12. 停止docker时报错:Warning: Stopping docker.service, but it can still be activated by: docker.socket
  13. 【完整示例】采用jenkins pipeline实现自动构建并部署至k8s
  14. 【Linux】腾讯云服务器,使用FRP内网穿透,端口映射,远程访问内网ubuntu机器
  15. 关于#java#的问题:resultMap type映射不到我想要的类 只能映射java的内部类 加了全路径也映射不了 怎么解决
  16. 排序算法--Java實例/原理
  17. 就这一次,阿里最新出品源码阅读指南,一套搞定JDK+vm源码
  18. 两个小时手写了个Zookeeper分布式服务注册中心
  19. Algorithme de tri - - instance / principe Java
  20. Plongez dans la syntaxe avancée javascript - coderwhy
  21. JavaScript高级程序设计读后感(一)之零碎知识点查漏补缺
  22. 先到先学!Alibaba甩出第四次更新的JDK源码高级笔记(终极版)
  23. Java File类
  24. How To Install MariaDB on linux
  25. #yyds干货盘点# Mybatis 的 XML 配置
  26. Spring认证中国教育管理中心-Spring Data MongoDB教程七
  27. Linux进程和任务管理
  28. Linux文件系统日志分析
  29. Redis-客户端-重点知识
  30. Redis-事件-重点知识
  31. Redis-AOF持久化-重点知识
  32. Redis-RDB持久化-重点知识
  33. http://lx.gongxuanwang.com/sszt/32.htm
  34. 回顾我两个月面试阿里,携程,小红书,美团,网易等等(Java岗)
  35. JavaScript高级程序设计读后感(一)之零碎知识点查漏补缺
  36. Rocketmq source code analysis: message sending process
  37. Rocketmq source code analysis: how does rocketmq store messages?
  38. RocketMQ source analysis: how to debug the RocketMQ source in IDEA
  39. How To Install MariaDB on linux
  40. Comment installer mariadb sur Linux
  41. http://lx.gongxuanwang.com/sszt/7.htm
  42. Classe de fichiers Java
  43. Premier arrivé, premier servi! Alibaba lance la quatrième mise à jour de JDK source Advanced notes (Ultimate)
  44. #yyds干货盘点#设计模式之【工厂模式】
  45. Java * SpringBoot实现万能文件在线预览,已开源,真香
  46. Redis | 第4章 Redis中的数据库《Redis设计与实现》
  47. Liang Tingwei's first variety show of "director, please give advice" reshapes the classic work "spring of a new town"
  48. Redis | 第4章 Redis中的数据库《Redis设计与实现》
  49. 关于centos docker版本过低导致 is not a valid repository/tag: invalid reference format
  50. Redis 源码简洁剖析 02 - SDS 字符串
  51. 回顧我兩個月面試阿裏,攜程,小紅書,美團,網易等等(Java崗)
  52. Rétrospectivement, j'ai passé deux mois à interviewer Ali, ctrip, Little Red Book, meituan, NetEase, etc. (Java post)
  53. Docker + webhook Automation Deployment Front End Project
  54. Java技术之Spring、Hibernate框架整合方法
  55. http://lx.gongxuanwang.com/sszt/32.htm
  56. 亚马逊自己的 Linux 发行版现在完全基于 Fedora 了
  57. Redis 源码简洁剖析 02 - SDS 字符串
  58. Java技術之Spring、Hibernate框架整合方法
  59. Méthode d'intégration des cadres de printemps et d'hibernation de la technologie Java
  60. Redis source Concise Analysis 02 - SDS String