Android网络通信之Http协议
在通过Http协议进行Android网络编程时,首先要了解清楚Http通信中的POST和GET请求方式的不同,GET可以获得静态页面,也可以把参数放在URL字符串后面,传递给服务器。而POST方法的参数是放在Http请求中。还有一点区别就是:传输的文件较小时一般使用GET方法;传输大文件时,最好使用POST方法。
HttpURLConnection是继承于URLConnection类,二者都是抽象类。其对象主要通过URL的openConnection方法获得。创建方法如下代码所示://链接路径
URL url=new URL("http://192.168.1.111:8080/web/tt.txt");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
对于你选取选取不同方法来进行网络通信,其创建方式在设置上有些许的不同,示例代码如下:
选用GET方法。
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/tt.txt");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//设置链接响应时长为5秒
connection.setConnectTimeout(5000);
//通过GET方法来进行信息交流
connection.setRequestMethod("GET");
选用POST方法。
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/ManageServlet2");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connect=(HttpURLConnection) url.openConnection();
//设置链接响应时长为5秒
connect.setConnectTimeout(5000);
/*
* 此部分为不可或缺的设置
*/
connect.setDoInput(true);//输入流采用字节流
connect.setDoOutput(true);//输出流采用字节流
connect.setUseCaches(false);//设置缓存
connect.setRequestMethod("POST");//响应方式
connect.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
下面给出实现手机获取服务器上一张图片(此方法可以通过手机的2G/3G网来获取服务器上你想要的图文信息,前提是:你的服务器必须是在广域网上。在这里附上一个申请免费的服务器的网站:http://eatj.com)的实例代码:public static byte[] getImage() throws Exception {
//此处路径为我在网上申请的一个免费的JSP空间路径,
URL url=new URL("http://zj954786746.s43.eatj.com/tomcat.gif");
//建立链接
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//响应时间设置为10秒
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");//使用GET方式连接
byte[] data = null;
if(connection.getResponseCode()==200){//判断响应是否正确,可加可不加
System.out.println("#############"+connection.getResponseCode());
InputStream in=connection.getInputStream();
int count=0,i=-1;
data=new byte[in.available()];
while((i=in.read())!=-1){
data[count]=(byte)i;
count++;
}
}
connection.disconnect();//关闭连接
return data;
}
再给出给服务器发送信息的实例代码:public static String sendData(String str) throws Exception {
//链接路径
URL url=new URL("http://192.168.1.111:8080/web/ManageServlet2");
//基于HTTP协议的链接对象,开通链接
HttpURLConnection connect=(HttpURLConnection) url.openConnection();
//设置链接响应时长为5秒
connect.setConnectTimeout(5000);
/*
* 此部分为不可或缺的设置
*/
connect.setDoInput(true);//输入流采用字节流
connect.setDoOutput(true);//输出流采用字节流
connect.setUseCaches(false);//设置缓存
connect.setRequestMethod("POST");//响应方式
connect.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
connect.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//对发送文字进行编码
send="message="+URLEncoder.encode(str, "gb2312");
//获取信息输出流
OutputStream out=connect.getOutputStream();
//
DataOutputStream out_data=new DataOutputStream(out);
out_data.writeBytes(send);
out_data.flush();//清空流管道中的信息
out_data.close();//关闭信息流
/*
* 接收服务器接收到我发送的信息做出的响应信息
* (以次判断是否成功发送)
*/
//获取信息输入流
InputStream in=connect.getInputStream();
int count=0,i=-1;
byte[] data=new byte[in.available()];
while((i=in.read())!=-1){
data[count]=(byte)i;
count++;
}
String str1=new String(data);
st=str1;
connect.disconnect();
return st;
}
以上发送和接收文本文件的服务器类为一个自制的虚拟服务器,创建平台为Tomcat。下面给出此服务器类代码:
package servlet;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ManageServlet2
*/
public class ManageServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ManageServlet2() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取发送过来的信息
String str=request.getParameter("message");
response.getOutputStream().print("ok");//做出响应信息回复
//文件保存路径
File f=new File("C:\\Documents and Settings\\Administrator\\桌面\\text.txt");
if(f.exists()){
f.delete();
}else{
f.createNewFile();
}
OutputStream out=new FileOutputStream(f.getAbsolutePath());
DataOutputStream out_data=new DataOutputStream(out);
out_data.writeBytes(str);
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);//调用doGet方法
}
}
- 大小: 22.2 KB
分享到:
相关推荐
1、 了解Android网络通信技术 2、 掌握在程序中嵌入浏览器的方法 3、掌握HTTP通信 4、掌握Socket通信 实验内容:(其中,1必做,2和3选一个) 1、 开发一个简单的浏览器程序,实现网址输入、前进、后退、刷新网页等...
Android中通过HTTP协议实现网络通信文件上传案例!
Http协议格式 GET请求格式 POST请求格式 Http应答 自定义HttpRequest 自定义HttpResponse
例子中包含两部分,一是Android应用作为HTTP客户端的代码,二是Java Servlet作为服务器端的代码。
android网络连接方式。举例说明。 android的网络编程分为2种:基于socket的,和基于http协议的。
1、建立在 TCP 协议之上,服务器端的实现比较容易。 2、与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。 3、支持双向通信,...
Android网络编程分为两种:基于http协议的,和基于socket的。 基于Http协议:HttpClient、HttpURLConnection、AsyncHttpClient框架等 基于Socket: (1)针对TCP/IP的Socket、ServerSocket (2)针对UDP/IP的...
网上介绍Android上http通信的文章很多,不过大部分只给出了实现代码的片段,一些注意事项和如何设计一个合理的类用来处理所有的http请求以及返回结果,一般都不会提及。因此,自己对此做了些总结,给出了我的一个...
Android应用源码Android平台下通过HTTP协议实现断点续传下载.rar Android应用源码Hibernate4Android.rar Android应用源码http、udp、tcp网络交互组件.rar Android应用源码ListView实现的目录树结构.rar Android应用...
2、掌握用Eclipse进行Android平台的UI基本设计、HTTP网络协议及XML文件解析等关键技术的实现,深刻理解XMPP(可扩展消息处理现场协议)协议; 3、学习使用MVC模式来构建系统的客户端,并掌握这种程序设计模式,分析...
Android网路编程代码 设计客户端和服务器端通信 适合初学者学习 当然其中包括很多其他知识点 例如基于handler的主副线程通信机制 多线程应用等 另外 对于Android入门的学习者 也是一手极好的学习资料 下载即可运行 ...
此篇Android学习笔记的源码主要内容: 1.使用WebView控件加载网页 2.使用ImageView控件加载网络图片
信录中的联系人和添加联系人,23_网络通信之网络图片查看器,24_网络通信之网页源码查看器,25_网络通信之资讯客户 端,26_采用JSON格式返回数据给资讯客户端,27_网络通信之通过GET和POST方式提交参数给web应用,...
Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口)、Org.apache接口和Android.net.*(Android网络接口)。下面分别介绍这些接口的功能和作用。 1.标准Java接口 java.net.*提供与联网有关的...
android项目,很多都会用上的网络通信这一技术,常用的就是Socket网络通信。Socket通信,基于TCP/IP协议和其它的协议和Http协议之间的桥梁,本文档列举一个简单的android项目,介绍了下Socket在android系统中是怎样...
信录中的联系人和添加联系人,23_网络通信之网络图片查看器,24_网络通信之网页源码查看器,25_网络通信之资讯客户 端,26_采用JSON格式返回数据给资讯客户端,27_网络通信之通过GET和POST方式提交参数给web应用,...
eoeAndroid特刊第十二期:Android网络处理 pdf,主要讲述android网络处理与实例、HTTP协议、网络通信等。
于是乎,一些Android网络通信框架也就应运而生,比如说AsyncHttpClient,它把HTTP所有的通信细节全部封装在了内部,我们只需要简单调用几行代码就可以完成通信操作了。再比如Universal-Image-Loader,它使得在界面上...
Http协议编解码,部分遵循RFC2612规范。 url路由,暂只支持GET请求。 支持https,由smart-socket赋能。 静态资源服务。 上述罗列的都是作为http服务器最基本的功能,故无任何亮点,反倒smart-http还有很多不足:...
(1)理解HTTP协议、URL请示的类别 (2)理解并掌握Android的线程与Hander消息机制 (3)学会使用HttpURLConnection访问网络 (4)学会使用HttpClient访问网络