Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。以下是本人在学习中的总结与归纳。
1. HttpURLConnection接口
首先需要明确的是,Http通信中的POST和GET请求方式的不同。GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。因此,在编程之前,应当首先明确使用的请求方法,然后再根据所使用的方式选择相应的编程方式。
HttpURLConnection是继承于URLConnection类,二者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示:
- URL url = new URL("http://www.51cto.com/index.jsp?par=123456");
- HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
|
通过以下方法可以对请求的属性进行一些设置,如下所示:
-
-
urlConn.setDoOutput(true);
-
urlConn.setDoInput(true);
-
-
urlConn.setRequestMethod("POST");
-
-
urlConn.setUseCaches(false);
-
- urlConn.disConnection();
-
|
HttpURLConnection默认使用GET方式,例如下面代码所示:
-
- HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
-
-
InputStreamReader in = new InputStreamReader(urlConn.getInputStream());
-
-
BufferedReader buffer = new BufferedReader(in);
-
String inputLine = null;
-
-
while (((inputLine = buffer.readLine()) != null))
- {
-
-
resultData += inputLine + "/n";
- }
-
- in.close();
-
- urlConn.disconnect();
|
如果需要使用POST方式,则需要setRequestMethod设置。代码如下:
- String httpUrl = "http://192.168.1.110:8080/httpget.jsp";
-
-
String resultData = "";
-
URL url = null;
-
try
- {
-
-
url = new URL(httpUrl);
- }
-
catch (MalformedURLException e)
- {
-
Log.e(DEBUG_TAG, "MalformedURLException");
- }
-
if (url != null)
- {
-
try
- {
-
- HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
-
-
urlConn.setDoOutput(true);
-
urlConn.setDoInput(true);
-
-
urlConn.setRequestMethod("POST");
-
-
urlConn.setUseCaches(false);
-
urlConn.setInstanceFollowRedirects(true);
-
-
urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
-
-
- urlConn.connect();
-
-
DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
-
-
String content = "par=" + URLEncoder.encode("ABCDEFG", "gb2312");
-
- out.writeBytes(content);
-
- out.flush();
- out.close();
|
2. HttpClient接口
使用Apache提供的HttpClient接口同样可以进行HTTP操作。
对于GET和POST请求方法的操作有所不同。GET方法的操作代码示例如下:
-
-
String httpUrl = "http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get";
-
-
HttpGet httpRequest = new HttpGet(httpUrl);
-
-
HttpClient httpclient = new DefaultHttpClient();
-
- HttpResponse httpResponse = httpclient.execute(httpRequest);
-
-
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
- {
-
- String strResult = EntityUtils.toString(httpResponse.getEntity());
- mTextView.setText(strResult);
- }
-
else
- {
-
mTextView.setText("请求错误!");
- }
- }
|
使用POST方法进行参数传递时,需要使用NameValuePair来保存要传递的参数。,另外,还需要设置所使用的字符集。代码如下所示:
-
-
String httpUrl = "http://192.168.1.110:8080/httpget.jsp";
-
-
HttpPost httpRequest = new HttpPost(httpUrl);
-
-
List<NameValuePair> params = new ArrayList<NameValuePair>();
-
-
params.add(new BasicNameValuePair("par", "HttpClient_android_Post"));
-
-
HttpEntity httpentity = new UrlEncodedFormEntity(params, "gb2312");
-
- httpRequest.setEntity(httpentity);
-
-
HttpClient httpclient = new DefaultHttpClient();
-
- HttpResponse httpResponse = httpclient.execute(httpRequest);
-
-
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
- {
-
- String strResult = EntityUtils.toString(httpResponse.getEntity());
- mTextView.setText(strResult);
- }
-
else
- {
-
mTextView.setText("请求错误!");
- }
- }
|
HttpClient实际上是对Java提供方法的一些封装,在HttpURLConnection中的输入输出流操作,在这个接口中被统一封装成了HttpPost(HttpGet)和HttpResponse,这样,就减少了操作的繁琐性。
另外,在使用POST方式进行传输时,需要进行字符编码。
原作地址:http://52android.blog.51cto.com/2554429/496621
分享到:
相关推荐
Android网络编程是移动应用开发中的一个重要组成部分,而Http通信则是网络编程中最常用的协议之一。在Android平台上,我们通常会使用HttpURLConnection或者第三方库如Apache HttpClient和OkHttp等进行Http通信。 1....
Android中,直接采用Socket通信应该是我们遇到的最低级的网络运用。
从描述中可以得知,Android网络编程涉及的知识点包括但不限于网络协议理解、网络编程接口的使用、以太网技术、硬件接口技术以及嵌入式系统设计等。 8. 网络编程中的Linux优化技术 文章提到了Linux优化技术,并在...
在Android系统应用开发中,网络通信是至关重要的一个环节,特别是在构建交互性强的应用时。本实验旨在让学生深入了解Android网络通信技术,并通过实际操作掌握不同类型的网络通信方式,包括利用WebView实现浏览器...
在Android平台上进行网络...总结起来,Android网络编程是通过Java网络库与远程服务器进行通信的过程,涉及请求构建、数据交换和错误处理等多个环节。了解并掌握这些基础知识对于开发功能丰富的Android应用至关重要。
在Android 4.0(Ice Cream Sandwich)系统中,网络编程是实现应用程序与远程服务器交互的重要部分。本章将深入探讨如何在Android平台上进行网络操作,包括基础的HTTP请求、数据传输、网络状态监听以及更高级的Socket...
在Android开发中,网络编程是一项基础且重要的技能,特别是在处理数据获取、文件传输等方面。本教程将引导初学者进入Android网络编程的世界,专注于图片下载这一实际应用。我们将使用Tomcat服务器来存储和提供图片,...
- Android 4.0中,网络编程的一个重要进步是引入了更加高级的抽象层,比如使用HTTP客户端API,这使得开发者不必深入了解底层的Socket连接细节,就能实现HTTP通信。 2. 使用URL和URLConnection: - Java的URL类和...
总结来说,“Android 4.0 网络编程详解”这篇文档可能详细介绍了Android 4.0版本的网络API使用方法、网络通信的最佳实践、网络编程中常见的问题和解决方案等。献给所有对技术抱有好奇心和热情的软件工程师们,意味着...
Android网路编程代码 设计客户端和服务器端通信 适合初学者学习 当然其中包括很多其他知识点 例如基于handler的主副线程通信机制 多线程应用等 另外 对于Android入门的学习者 也是一手极好的学习资料 下载即可运行 ...
通过以上介绍,我们可以了解到Android聊天室项目是如何通过Socket网络编程实现客户端与服务器之间的通信的。服务器端作为消息的中转站,负责接收客户端发送的消息并将这些消息广播给所有在线的客户端。客户端则通过...
以上介绍了Android网络编程的基本知识点,包括网络状态检测、Wi-Fi网络访问、套接字通信以及HTTP协议的使用。这些技术是构建具有网络功能的Android应用的基础,掌握它们可以帮助开发者更好地实现复杂的功能需求。
这个“Android网络编程Demo”旨在提供一个基础的示例,帮助开发者理解和实践如何在Android应用中实现网络通信。以下是相关知识点的详细说明: 1. **Android网络权限**: 在AndroidManifest.xml文件中,需要声明`...
在Android应用开发中,HTTP协议编程是至关重要的一个环节,特别是在进行网络通信时。老罗的这个Android视频教程深入浅出地讲解了如何在Android环境中使用HTTP协议进行数据交互,对于初学者和有一定经验的开发者来说...
在Android平台中进行高级网络编程时,涉及到的核心知识点主要包括网络通信机制、TCP与UDP协议、多线程处理以及数据缓冲等技术。下面将详细介绍这些知识点,并解析如何在Android中实现基于Socket的网络通信。 ### ...
网络编程与3G通信是信息技术领域中的两个重要概念,它们在现代互联网和移动通信系统中起着关键作用。网络编程是指编写程序来实现计算机之间的通信,包括数据的发送、接收和处理,它是互联网应用程序的基础。而3G通信...
《Android 4.0网络编程详解》一书深入探讨了在Android 4.0系统上进行网络编程的技术细节与实践方法。此版本的Android系统,即Ice Cream Sandwich(冰淇淋三明治),带来了许多网络功能上的改进和新特性,使得开发者...