转载:
http://blog.csdn.net/flying_tao/article/details/6553601
本程序介绍如何通过HttpClient模块来创建Http连接,并分别以Http Get和Post方法传递参数,连接之后取回web server的返回网页结果。
注意,在用Post时,传递变量必须用NameValuePais[]数组存储,通过HttpRequest.setEntity()方法来发出http请求。
此外,也必须通过DefaultHttpClient().execute(httpRequest)添加HttpRequest对象来接收web server的回复,在通过httpResponse.getEntity()取出回复信息
/*必需引用apache.http相关类别来建立HTTP联机*/
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
/*必需引用java.io 与java.util相关类来读写文件*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class EX08_01 extends Activity
{
/*声明两个Button对象,与一个TextView对象*/
private Button mButton1,mButton2;
private TextView mTextView1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*透过findViewById建构子建立TextView与Button对象*/
mButton1 =(Button) findViewById(R.id.myButton1);
mButton2 =(Button) findViewById(R.id.myButton2);
mTextView1 = (TextView) findViewById(R.id.myTextView1);
/*设定OnClickListener来聆听OnClick事件*/
mButton1.setOnClickListener(new Button.OnClickListener()
{
/*重写onClick事件*/
@Override
public void onClick(View v)
{
/*声明网址字符串*/
String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php";
/*建立HTTP Post联机*/
HttpPost httpRequest = new HttpPost(uriAPI);
/*
* Post运作传送变量必须用NameValuePair[]数组储存
*/
List <NameValuePair> params = new ArrayList <NameValuePair>();
params.add(new BasicNameValuePair("str", "I am Post String"));
try
{
/*发出HTTP request*/
httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
/*取得HTTP response*/
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
/*若状态码为200 ok*/
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
/*取出响应字符串*/
String strResult = EntityUtils.toString(httpResponse.getEntity());
mTextView1.setText(strResult);
}
else
{
mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString());
}
}
catch (ClientProtocolException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (IOException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (Exception e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
}
});
mButton2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
/*声明网址字符串*/
String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/Get/index.php?str=I+am+Get+String";
/*建立HTTP Get联机*/
HttpGet httpRequest = new HttpGet(uriAPI);
try
{
/*发出HTTP request*/
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
/*若状态码为200 ok*/
if(httpResponse.getStatusLine().getStatusCode() == 200)
{
/*取出响应字符串*/
String strResult = EntityUtils.toString(httpResponse.getEntity());
/*删除多余字符*/
strResult = eregi_replace("(/r/n|/r|/n|/n/r)","",strResult);
mTextView1.setText(strResult);
}
else
{
mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString());
}
}
catch (ClientProtocolException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (IOException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
catch (Exception e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
}
});
}
/* 自定义字符串取代函数 */
public String eregi_replace(String strFrom, String strTo, String strTarget)
{
String strPattern = "(?i)"+strFrom;
Pattern p = Pattern.compile(strPattern);
Matcher m = p.matcher(strTarget);
if(m.find())
{
return strTarget.replaceAll(strFrom, strTo);
}
else
{
return strTarget;
}
}
}
在androidManifest.xml中必须添加权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
分享到:
相关推荐
介绍如何通过HttpClient模块来创建Http连接,并分别以Http GET与Http POST方法来传递参数,连接之后取回Web Server的返回网页结果。重点是如何使用HttpClient的模块来完成Http的请求与应答。 分享参考自Android SDK...
这里的`@GET`和`@POST`注解代表了HTTP的GET和POST请求,`@Query`用于GET请求时将参数添加到URL中,`@Body`用于POST请求时将对象作为请求体发送。 接下来,为了实现公共参数的统一处理,我们可以创建一个拦截器...
在Android开发中,POST和GET是两种主要的HTTP请求方法,用于从服务器获取数据或向服务器发送数据。本文将深入探讨这两种方法的工作原理、应用场景以及如何在Android中实现它们。 一、POST与GET方法的区别 1. 工作...
在Android开发中,与服务器进行数据交互是必不可少的步骤,主要通过HTTP协议的GET和POST方法来实现。本文将深入探讨这两种方法以及如何在Android后台实现它们。 首先,GET和POST是HTTP协议中最常见的两种请求方法。...
本教程将深入探讨如何在Android中使用HTTP GET和POST方法进行网络请求,通过一个实际的HttpTest示例来阐述相关知识。 一、HTTP GET与POST的区别 1. GET:主要用来获取资源,它是幂等的,即多次执行同一个GET请求,...
HttpURLConnection是Android SDK内置的API,可以用来发送GET和POST请求,而Volley和OkHttp是更高效的第三方库,提供了更便捷的API和缓存机制。 2. **异步请求**:由于Android主线程不允许执行耗时操作,网络请求...
本篇将详细探讨如何封装Android中的HTTP请求,包括GET、POST和PUT方法,以便在项目中方便地调用。 首先,让我们了解HTTP的基本概念。HTTP(超文本传输协议)是一种无状态、基于文本的协议,主要负责Web应用程序的...
在Android开发中,GET和POST是两种最常见的HTTP请求方法,用于与服务器进行数据交互。GET主要用于获取资源,而POST则用于向服务器提交数据。这里我们将深入探讨这两种方法以及如何在多线程环境下创建唯一的...
在Android应用开发中,用户身份验证是至关重要的环节,通常涉及到两种主要的HTTP请求方法:GET和POST。本文将深入探讨这两种方式在Android登录场景中的应用,并解释它们的区别与适用情况。 **一、GET方式** GET是...
8.1 HTTPGET/POST传递参数——HTTP连接示范 8.2 在程序里浏览网页——WebView.loadUrl 8.3 嵌入HTML标记的程序——WebView.loadData 8.4 设计前往打开网页功能——Intent与Uri.parse 8.5 将网络图像网址放入Gallery...
由于参数直接在URL中显示,所以GET请求不适合传递敏感信息。此外,GET请求会被浏览器缓存,可能导致安全问题。 POST方法则更为复杂,常用于提交表单数据或上传文件。POST请求的数据被封装在请求体中,不会显示在URL...
在Android开发中,网络访问是应用与服务器交互的重要部分,GET和POST是HTTP协议中最常见的两种请求方法。本文将深入探讨Android中实现网络访问的框架,重点讲解如何使用GET和POST进行数据交换。 首先,我们要了解...
本篇文章将详细讲解HTTP中的GET和POST方法,并着重阐述它们在Android应用程序中向服务器发送数据的应用。 首先,GET和POST是HTTP协议中两种主要的请求方法,它们用于从服务器获取资源或向服务器提交数据。 1. GET...
本示例将重点讲解如何在Android应用中实现基于HTTP的JSON数据传递,以及如何处理文件的上传和下载。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...
以上就是关于Android中使用GET和POST方法进行Http通信的基本介绍。通过`LoginServerDemo`这个示例,你可能会看到如何结合这些知识实现登录服务的通信,包括如何处理服务器返回的数据,以及如何处理可能出现的网络...
在Android开发过程中,网络请求是不可或缺的一部分,而`HttpClient`是一个强大的HTTP客户端库,它允许开发者执行各种HTTP操作,如GET、POST、PUT和DELETE。本篇文章将详细讲解如何使用`HttpClient`工具类来简化这些...
本篇文章主要聚焦于使用`HttpURLConnection`类来发送POST和GET请求,这是Android SDK内置的一种HTTP请求方法,相较于第三方库如OkHttp或Volley,使用`HttpURLConnection`更轻量级,易于理解和控制。 首先,我们先...
这篇文章将详细介绍 Retrofit 动态参数的使用,包括 Get 和 Post 请求。 什么是动态参数 在网络请求中,我们经常需要传递参数,例如用户 ID、页面编号等。这些参数可能是固定不变的,也可能是动态变化的。动态参数...
如果需要传递参数,可以使用`NameValuePair`或`BasicNameValuePair`,然后通过`UrlEncodedFormEntity`将其转化为HTTP实体。 ```java List<NameValuePair> params = new ArrayList(); params.add(new ...
通常有GET和POST两种方法来发送数据。本文将深入探讨如何通过POST方式在Android中获取服务器数据。 首先,我们需要了解HTTP POST请求的基本概念。HTTP POST请求用于向服务器提交数据,常用于表单提交。与GET方法...