- 浏览: 394830 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
surpassno:
南冠楚囚 写道如果是复制一个一位数组,那么改变复制后的数组并不 ...
java的system.arraycopy()方法 -
南冠楚囚:
如果是复制一个一位数组,那么改变复制后的数组并不影响原数组。你 ...
java的system.arraycopy()方法 -
wxq5513866:
有密码,大家不要下载了,下载也解压不了,别上当了
android中调用webservice -
wxq5513866:
happyhan 写道还要密码啊 能否告知密码
android中调用webservice -
happyhan:
还要密码啊 能否告知密码
android中调用webservice
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接口
访问无需参数的网页
当访问有参数的jsp网页时,只需要在url的末端加上参数即可,这是因为httpurlconnection默认的访问方式为GET,
url:http://192.168.1.110:8080/http1.jsp?par=values
当要以post方式访问时,需要设置进行setRequestMethod设置,如果无参数直接访问,有参数的话要通过writeBytes写入数据流。
示例:
如果是下载一幅图片并显示,则将下载的InputStream转化为BitMap即可
上述是通过标准java接口来实现http,如果需要更加复杂的应用,可以使用android提供的HttpClient
GET方式访问
POST方式访问网页
通常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()); }
发表评论
-
jmx介绍
2012-05-18 15:21 1324"JMX(Java Management Exten ... -
RMI介绍
2012-05-18 09:55 1058Java RMI (Remote Method Invocat ... -
java多线程文件下载
2012-03-08 20:03 24711、DownloadManager类 import java. ... -
java异常处理
2011-11-30 15:27 987public class test { /** ... -
快排和插入排序
2011-10-20 17:08 1147public class CombineQuickSortIn ... -
java NIO
2011-10-09 19:22 1452一、NIO的出现 NIO是JDK1.4里面才出 ... -
java 远程通信协议
2011-10-09 16:55 1585Java 远程通讯可选技术及原理 在分布式服务框架中,一个最基 ... -
system.exit
2011-09-29 17:00 1020System.exit()用来结束当前运行的java虚拟机,参 ... -
java 文件读取方法
2011-09-27 14:50 12361、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文 ... -
timestamp时间戳
2011-09-05 09:51 1231timestamp是一种时间类型 精度很高,比datetim ... -
java 动态代理类的实现,原理及应用
2011-09-03 11:02 2201在目前的Java开发包中包含了对动态代理的支持,但是其实现只支 ... -
java annotation 介绍
2011-09-02 11:03 956元数据的作用 如果要 ... -
java 反射
2011-08-20 11:27 799JAVA语言中的反射机制: 在Java 运行时 环境中 ... -
junit使用
2011-08-05 16:41 1168测试分类:白箱测试、黑箱测试、单元测试、集成测试、功能测试.. ... -
ThreadLocal 知识
2011-08-05 13:58 859ThreadLocal是什么 早在JD ... -
httpclient 介绍
2011-07-28 09:33 10631.HttpClient简介 HttpCl ... -
java解析xml的四种方法
2011-07-13 22:52 14651. DOM(Document Object Model) ... -
xml字符串转化为规则格式的xml字符串
2011-07-13 18:53 1394import java.io.ByteAr ... -
java中的参数传递
2011-07-13 10:48 986面试题:当一个对象被当 ... -
StringUtils的实用方法
2011-07-13 10:16 1703tringUtils 方法的操作对象是 java.lang. ...
相关推荐
本项目“C++开发通用的HTTP通信模块”就是这样一个实用工具,它为开发者提供了一套预调试好的、可以直接集成到自己项目的HTTP通信解决方案,从而节省了大量时间和资源。 HTTP(超文本传输协议)是互联网上应用最...
HTTP通信模拟工具是一种用于测试和调试HTTP协议的应用程序,它允许开发者模拟客户端向服务器发起的各种HTTP请求,并查看服务器的响应。在本项目中,我们利用Microsoft Foundation Classes (MFC)库中的...
本教程将详细介绍如何在CodeSys V3.5中实现HTTP通信。 首先,理解HTTP通信的基本原理是必要的。HTTP是一种无状态、基于请求与响应模型的协议,通过TCP/IP连接在客户端(如CodeSys控制器)和服务器之间传输数据。在...
本教程将深入探讨如何在C#环境中实现基于HTTP通信协议的设计,以实现浏览器与服务器之间的有效交互。 首先,我们需要理解HTTP协议的基本概念。HTTP是基于TCP/IP协议的应用层协议,主要通过TCP连接进行数据传输。它...
本项目提供的"Http2008"是一个C++实现的HTTP通信类库,它封装了HTTP协议,使得开发者能够轻松地在C++应用中进行HTTP请求和响应的处理。下面将详细解释其中涉及的主要知识点。 首先,HTTP(超文本传输协议)是互联网...
HTTP通信是互联网应用中至关重要的一个环节,它允许客户端(如浏览器或移动应用)与服务器进行数据交换。在这个"HTTP通信实例工程代码"中,我们将会深入探讨HTTP通信的细节,以及如何在Android平台上实现这些通信。...
在Android开发中,进行HTTP通信是常见的操作,用于与服务器交换数据。HTTP(超文本传输协议)是一种基于TCP/IP通信协议来交换数据的应用层协议,广泛应用于网页浏览、API交互等场景。本教程将深入讲解如何在Android...
本篇将深入探讨如何使用LabVIEW创建Web服务并结合C#进行HTTP通信,特别是POST和GET请求的实现。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程环境,广泛应用于工程、科学和教育...
"默蓝网络通信测试工具(NIOSocket工具)"正是这样一款针对TCP/IP和HTTP通信的专业测试工具,它为网络通信开发人员提供了强大的测试与分析能力。 首先,我们要理解TCP/IP协议的重要性。TCP(传输控制协议)和IP(网际...
Http通信。通过两个例子: > 网络请求到百度的网页,展示到一个webview上。 > 网络请求一张图片,展示到界面的ImageView上。
android 当中涉及到网络编程的部分经常会用到http通信,同时android也为我么您提供了HttpUrlConnection接口和HttpClient接口,大大的方便了开发。Http通信又分为两种方式:get和post,get可以uoqu静态页面,传入参数...
在Android应用开发中,Http通信是连接服务器获取或发送数据的重要手段。本笔记及源码主要探讨了如何在Android环境中实现Http通信,包括基础理论、常用库的使用以及实际操作中的注意事项。 一、Http通信基础 Http...
标题 "20.0 HTTP通信1" 暗示了我们即将探讨的是互联网通信的基础,特别是关于超文本传输协议(HTTP)的初步概念。HTTP是Web应用的核心,它定义了客户端(通常是浏览器)与服务器之间交换数据的方式。下面,我们将...
在IT行业中,HTTP通信测试和Java Servlet测试是Web应用程序开发中的关键环节,它们确保了客户端与服务器之间的数据传输准确无误。在这个场景中,我们关注的是如何通过HTTP协议进行通信,以及如何使用Java Servlet来...
在.NET框架中,C#提供了多种方式来处理HTTP通信,如HttpClient、WebClient等。本文将深入探讨这些类库的使用方法以及HTTP协议在网络通信中的重要性,特别是当与JSON数据交互时。首先,让我们详细了解`HttpClient`和`...
这个资源包括了服务器端和客户端的实现,意味着你可以通过此代码理解如何在VC++环境中构建基本的HTTP通信系统。 HTTP(超文本传输协议)是互联网上应用最广泛的一种网络通信协议,它定义了客户端(如Web浏览器)和...
在Android应用开发中,HTTP通信是连接服务器获取或发送数据的一种常见方式。本文将深入探讨Android中的HTTP通信,包括基本概念、使用场景、主要库的介绍以及如何在实际项目中实施HTTP请求。 首先,理解HTTP(超文本...
本资料包"**c#与python的http通信.zip**"聚焦于C#和Python这两种编程语言如何通过HTTP进行通信,特别提到了发送图片这一应用场景。 首先,我们来看C#中的HTTP通信。在C#中,可以使用`System.Net.Http`命名空间下的`...
**HTTP通信** HTTP(超文本传输协议)是一种应用层协议,用于在Web上交换数据。HTTP基于客户端/服务器模型,通过TCP/IP连接进行通信,标准端口是80,但在HTTPS中通常使用443端口。HTTP协议简单、快速,适用于分布式...
这个【标题】"Java Http通信测试代码"所指的,是一个关于如何使用Java进行HTTP通信的源代码实例,旨在帮助开发者理解并实践这一技术。【描述】提到,这个代码集是作者对Java网络通信,特别是HTTP协议的个人总结,...