- 浏览: 325193 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
HTTP(HyperText Transfer
Protocol)是超文本转移协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响
应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器
以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域
结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大
小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
最常用的Http请求无非是get 和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
android提供了HttpURLConnection和HttpCliient接口来开发HTTP程序:
使用HttpURLConnection接口
访问无需参数的网页
//http地址 String httpUrl = "http://192.168.1.110:8080/http1.jsp"; //获得的数据 String resultData = ""; URL url = null; try { //构造一个URL对象 url = new URL(httpUrl); } catch (MalformedURLException e) { Log.e(DEBUG_TAG, "MalformedURLException"); } if (url != null) { try { //使用HttpURLConnection打开连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); //得到读取的内容(流) InputStreamReader in = new InputStreamReader(urlConn.getInputStream()); // 为输出创建BufferedReader BufferedReader buffer = new BufferedReader(in); String inputLine = null; //使用循环来读取获得的数据 while (((inputLine = buffer.readLine()) != null)) { //我们在每一行后面加上一个"\n"来换行 resultData += inputLine + "\n"; } //关闭InputStreamReader in.close(); //关闭http连接 urlConn.disconnect(); //设置显示取得的内容 if ( resultData != null ) { mTextView.setText(resultData); } else { mTextView.setText("读取的内容为NULL"); } } catch (IOException e) { Log.e(DEBUG_TAG, "IOException"); } }
当访问有参数的jsp网页时,只需要在url的末端加上参数即可,这是因为httpurlconnection默认的访问方式为GET,
url:http://192.168.1.110:8080/http1.jsp?par=values
当要以post方式访问时,需要设置进行setRequestMethod设置,如果无参数直接访问,有参数的话要通过writeBytes写入数据流。
示例:
try { String httpUrl = "http://192.168.1.110:8080/httpget.jsp"; // 使用HttpURLConnection打开连接 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); //因为这个是post请求,设立需要设置为true urlConn.setDoOutput(true); urlConn.setDoInput(true); // 设置以POST方式 urlConn.setRequestMethod("POST"); // Post 请求不能使用缓存 urlConn.setUseCaches(false); urlConn.setInstanceFollowRedirects(true); // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的 urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成, // 要注意的是connection.getOutputStream会隐含的进行connect。 urlConn.connect(); //DataOutputStream流 DataOutputStream out = new DataOutputStream(urlConn.getOutputStream()); //要上传的参数 String content = "par=" + URLEncoder.encode("ABCDEFG", "gb2312"); //将要上传的内容写入流中 out.writeBytes(content); //刷新、关闭 out.flush(); out.close(); //获取数据 BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); String inputLine = null; //使用循环来读取获得的数据 while (((inputLine = reader.readLine()) != null)) { //我们在每一行后面加上一个"\n"来换行 resultData += inputLine + "\n"; } reader.close(); //关闭http连接 urlConn.disconnect(); //设置显示取得的内容 if ( resultData != null ) { mTextView.setText(resultData); } else { mTextView.setText("读取的内容为NULL"); } } catch (IOException e) { Log.e(DEBUG_TAG, "IOException"); }
如果是下载一幅图片并显示,则将下载的InputStream转化为BitMap即可
InputStream is=conn.getInputStream(); Bitmap bt=BitmapFactory.decodeStream(is); return bt;.
上述是通过标准java接口来实现http,如果需要更加复杂的应用,可以使用android提供的HttpClient
GET方式访问
String httpUrl = "http://192.168.1.110:8080/httpget.jsp?par=HttpClient_android_Get"; //HttpGet连接对象 HttpGet httpRequest = new HttpGet(httpUrl); try { //取得HttpClient对象 HttpClient httpclient = new DefaultHttpClient(); //请求HttpClient,取得HttpResponse HttpResponse httpResponse = httpclient.execute(httpRequest); //请求成功 if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //取得返回的字符串 String strResult = EntityUtils.toString(httpResponse.getEntity()); mTextView.setText(strResult); } else { mTextView.setText("请求错误!"); } } catch (ClientProtocolException e) { mTextView.setText(e.getMessage().toString()); }
POST方式访问网页
String httpUrl = "http://192.168.1.110:8080/httpget.jsp"; //HttpPost连接对象 HttpPost httpRequest = new HttpPost(httpUrl); //使用NameValuePair来保存要传递的Post参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); //添加要传递的参数 params.add(new BasicNameValuePair("par", "HttpClient_android_Post")); try { //设置字符集 HttpEntity httpentity = new UrlEncodedFormEntity(params, "gb2312"); //请求httpRequest httpRequest.setEntity(httpentity); //取得默认的HttpClient HttpClient httpclient = new DefaultHttpClient(); //取得HttpResponse HttpResponse httpResponse = httpclient.execute(httpRequest); //HttpStatus.SC_OK表示连接成功 if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { //取得返回的字符串 String strResult = EntityUtils.toString(httpResponse.getEntity()); mTextView.setText(strResult); } else { mTextView.setText("请求错误!"); } } catch (ClientProtocolException e) { mTextView.setText(e.getMessage().toString()); }
转自:http://xuyuanshuaaa.iteye.com/blog/981720
发表评论
-
Android中AsyncTask的简单用法
2012-01-13 16:00 1122在开发Android移动客户端的时候往往要使用多线程来进行操 ... -
Android应用的自动升级、更新模块的实现 .
2011-11-16 14:01 644http://www.eoeandroid.com/threa ... -
一个APK反编译利器Apktool
2011-11-16 13:54 1554一个APK反编译利器Apktool APK 本地化 ... -
自定义Android标题栏TitleBar布局
2011-11-14 14:13 1214很多网友发现自己Android程序的标题栏TitleBar区域 ... -
Android GPS获取地理位置 .
2011-11-14 14:11 825import android.app.Activity; i ... -
android ListView详解
2011-11-14 13:48 1025在android开发中ListView是比较常用的组件,它以列 ... -
Android之Content provider 详解
2011-11-14 13:35 2435Android是如何实现应用程序之间数据共享的?一个应用程序可 ... -
Android源码地址
2011-11-12 19:14 1023http://blog.csdn.net/ilittleone ... -
android之File
2011-11-11 22:39 19691:Fileservice package cn.itcas ... -
Android知识补漏
2011-11-09 22:33 01:AndroidManifiest.xml < ... -
深入剖析Android消息机制
2011-11-09 14:13 934在Android中,线程内部或者线程之间进行信息交互时经常会使 ... -
Android之Handler详解(四)
2011-11-09 14:00 1263d、自己创建新的线程,然后在新线程中创建Looper,主线程调 ... -
Android之Handler详解(三)
2011-11-09 13:58 1347c、将消息队列绑定到子线程上,主线程只管通过Handl ... -
Android之Handler详解(二)
2011-11-09 13:54 1634二:sendMessage版本的Handl ... -
Android之Handler详解(一)
2011-11-09 13:22 2266一个Handler允许你发送和处理消息(Message)以及 ... -
关于StartActivityForResult方法的使用
2011-10-31 17:11 1052根据方法名可知 这个方法是要得到启动后的Activity返回的 ... -
Android 悬浮Activity并可拖动(访悬浮歌词)
2011-10-24 16:23 2049天天动听, 这款Android手机上的音乐播放器,相信不少朋友 ... -
Android GWES
2011-10-24 16:13 1154第八章 Android GWES 8.1 View Syst ... -
Android系统服务-WindowManager
2011-10-24 16:10 1416WindowManager是Android中一个重要的服务 ... -
android网络与通信(三种网络接口简述 )
2011-10-15 17:27 1413标准Java接口 java.net.*提供与联网有关的类 ...
相关推荐
基于C#的HTTP通信协议设计~~~~能够实现浏览器端和服务器端的通信
通过MFC在CInternetSession类实现HTTP通信
codesys如何实现http通信,含说明文档,软件版本为V3.5。
全网最简单易懂的HTTP通信细节实例~可以作为模板在基础上添加功能~DEMO里包括所有HTTP通信的各种交互过程~可以说是非常良心的小案例啦~现在拿出来给各位小伙伴分享~
android实现http通信协议的小例子
Unity3D教程:利用UnityHttpClient类实现Http通信 Posted on 2013年02月04日 by U3d / Unity3D 基础教程
http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http 通信过程http ...
Http通信。通过两个例子: > 网络请求到百度的网页,展示到一个webview上。 > 网络请求一张图片,展示到界面的ImageView上。
Java Servlet实现HTTP通信的例子,基于Servlet技术,这代码看上去是Android中的一个例子,Android HTTP通信的例子,暂时没有截图哦,自己搞吧。
android 当中涉及到网络编程的部分经常会用到http通信,同时android也为我么您提供了HttpUrlConnection接口和HttpClient接口,大大的方便了开发。Http通信又分为两种方式:get和post,get可以uoqu静态页面,传入参数...
Android网络编程之Http通信,使用了http和jason
自己封装的HTTP协议,通信方式采用JSON格式,可自己完善session登录验证。
labview创建webservice,客户端,C#创建客户端 最终实现C#和labview使用http进行互相通信
一个非常好的手机HTTP通信案例,这个例子适合所有手机平台的HTTP通信。
本代码主要教大家如何正确的使用"GET"和"POST"方法
Http通信的两种实现方式,一种是HttpClient,一种事HttpURLConnection方式
慕课网 Android中的Http通信 笔记及源码
Unity中和后端进项Http通信的插件,简单易用
基于VS2010利用C#实现HTTP在 GET和POST方法的样例代码,提供大家学习参考。欢迎下载学习
在浏览器客户端与服务器的交互过程 中,HTTP通信协议 工作原理的详细过程说明,有利于初学者对于网络通信的理解!