无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。
1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。
HttpGet
public String doGet(){
String uriAPI = "http://XXXXX?str=I+am+get+String";
String result= "";
// HttpGet httpRequst = new HttpGet(URI uri);
// HttpGet httpRequst = new HttpGet(String uri);
// 创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
HttpGet httpRequst = new HttpGet(uriAPI);
// new DefaultHttpClient().execute(HttpUriRequst requst);
try {
//使用DefaultHttpClient类的execute方法发送HTTP GET请求,并返回HttpResponse对象。
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);//其中HttpGet是HttpUriRequst的子类
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
HttpEntity httpEntity = httpResponse.getEntity();
result = EntityUtils.toString(httpEntity);//取出应答字符串
// 一般来说都要删除多余的字符
result.replaceAll("\r", "");//去掉返回结果中的"\r"字符,否则会在结果字符串后面显示一个小方格
}else {
httpRequst.abort();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = e.getMessage().toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = e.getMessage().toString();
}
return result;
}
HttpPost
如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。
public String doPost() {
String uriAPI = "http://XXXXXX";//Post方式没有参数在这里
String result = "";
HttpPost httpRequst = new HttpPost(uriAPI);//创建HttpPost对象
List <NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("str", "I am Post String"));
try {
httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst);
if(httpResponse.getStatusLine().getStatusCode() == 200){
HttpEntity httpEntity = httpResponse.getEntity();
result = EntityUtils.toString(httpEntity);//取出应答字符串
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = e.getMessage().toString();
}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = e.getMessage().toString();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = e.getMessage().toString();
}
return result;
}
以发送连接请求时,需要设置链接超时和请求超时等参数,否则会长期停止或者崩溃。
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 10*1000);//设置请求超时10秒
HttpConnectionParams.setSoTimeout(httpParameters, 10*1000); //设置等待数据超时10秒
HttpConnectionParams.setSocketBufferSize(params, 8192);
HttpClient httpclient = new DefaultHttpClient(httpParameters); //此时构造DefaultHttpClient时将参数传入
由于是联网,在AndroidManifest.xml中添加网络连接的权限
<uses-permission android:name="android.permission.INTERNET"/>
相关推荐
本项目“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静态页面,传入参数...
在LabVIEW中实现HTTP通信是一种常见的做法,特别是在物联网项目中,设备需要通过HTTP协议与服务器进行数据交换。 HTTP(超文本传输协议)是应用最广泛的一种网络协议。在LabVIEW中实现HTTP通信,通常需要使用...
在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协议简单、快速,适用于分布式...