HttpClient和AsynchttpClient的get与post请求方式

HttpClient的get方式:

由于是网络请求,一定要放在子线程里做。

首先创建一个HttpClient对象:

HttpClient httpClient = new DefaultHttpClient();

然后创建一个HttpGet,将url地址传进去:

HttpGet httpGet = new HttpGet(path);

然后获取状态码,200的话就是访问成功了:

int code = response.getStatusLine().getStatusCode();

接下来得到响应:

HttpResponse response = httpClient.execute(httpPost);

再判断内容是否登入成功就行了。

完整的方法:

 1 public static void requestNewForGetLogin(final Handler handler, final String username, final String password) {
 2
 3         new Thread(new Runnable() {
 4
 5             @Override
 6             public void run() {
 7                 try {
 8                     String path = "http://192.168.0.106:8080/Starry/servlet/LoginServlet?username=" + URLEncoder.encode(username,"utf-8") + "&pwd=" + URLEncoder.encode(password,"utf-8");
 9                     //创建一个HttpClient对象
10                     HttpClient httpClient = new DefaultHttpClient();
11                     //设置请求方式
12                     HttpGet httpGet = new HttpGet(path);
13                     HttpResponse response = httpClient.execute(httpGet);
14                     int code = response.getStatusLine().getStatusCode();
15                     if(code == 200) {
16                         HttpEntity entity = response.getEntity();
17                         InputStream inputStream = entity.getContent();
18                         String result = StreamUtils.streamToString(inputStream);
19                         boolean issuccess = false;
20                         if(result.contains("success")){
21                             issuccess = true;
22                         }
23                         Message msg = Message.obtain();
24                         msg.obj = issuccess;
25                         msg.what = 1;
26                         handler.sendMessage(msg);
27                     }
28                 } catch (Exception e) {
29                     e.printStackTrace();
30                 }
31             }
32         }).start();
33     }

HttpClient的post方式:

post方式与get有很多相似之处。不同的就是需要创建集合封装数据。

ArrayList<BasicNameValuePair> arrayList = new ArrayList<BasicNameValuePair>();
                    BasicNameValuePair nameValuePair = new BasicNameValuePair("username", username);
                    arrayList.add(nameValuePair);
                    BasicNameValuePair nameValuePair2 = new BasicNameValuePair("pwd", password);
                    arrayList.add(nameValuePair2);

完整的方法:

 1 public static void requestNewForPostLogin(final Handler handler, final String username, final String password) {
 2         final String path = "http://192.168.0.106:8080/Starry/servlet/LoginServlet"; // Post
 3         new Thread(new Runnable() {
 4
 5             @Override
 6             public void run() {
 7                 try {
 8                     //创建一个HttpClient对象
 9                     HttpClient httpClient = new DefaultHttpClient();
10                     //创建一个请求方式
11                     HttpPost httpPost = new HttpPost(path);
12                     //创建集合封装数据
13                     ArrayList<BasicNameValuePair> arrayList = new ArrayList<BasicNameValuePair>();
14                     BasicNameValuePair nameValuePair = new BasicNameValuePair("username", username);
15                     arrayList.add(nameValuePair);
16                     BasicNameValuePair nameValuePair2 = new BasicNameValuePair("pwd", password);
17                     arrayList.add(nameValuePair2);
18                     //创建一个entity
19                     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(arrayList,"utf-8");
20                     httpPost.setEntity(entity);
21                     HttpResponse response = httpClient.execute(httpPost);
22                     int code = response.getStatusLine().getStatusCode();
23                     if(code == 200) {
24                         HttpEntity entity2 = response.getEntity();
25                         InputStream inputStream = entity2.getContent();
26                         String result = StreamUtils.streamToString(inputStream);
27                         boolean issuccess = false;
28                         if(result.contains("success")){
29                             issuccess = true;
30                         }
31                         Message msg = Message.obtain();
32                         msg.obj = issuccess;
33                         msg.what = 2;
34                         handler.sendMessage(msg);
35                     }
36
37                 } catch (Exception e) {
38                     e.printStackTrace();
39                 }
40             }
41         }).start();
42     }

AsyncHttpClient由于已经封装好了在子线程里做,就不想自己创建子线程了。

AsyncHttpClient的get方式:

首先创建AsyncHttpClient对象:

AsyncHttpClient asyncHttpClient = new AsyncHttpClient();

然后调用asyncHttpClient里的get方法。asyncHttpClient.get(url, responseHandler)

第一个参数数地址,第二个参数可以用匿名类。

responseHandler类里有两个方法onSuccess和onFailure,分别代表成功和失败。

 1 asyncHttpClient.get(path, new AsyncHttpResponseHandler() {
 2
 3                         @Override
 4                         public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
 5                             if(statusCode == 200) {
 6                                 try {
 7                                     String result = new String(responseBody,"utf-8");
 8                                     Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
 9                                 } catch (UnsupportedEncodingException e) {
10                                     e.printStackTrace();
11                                 }
12
13                             }
14                         }
15
16                         @Override
17                         public void onFailure(int statusCode, Header[] headers,
18                                 byte[] responseBody, Throwable error) {
19                             System.out.println(".............Failure");
20                         }
21                     });

完整的方法:

 1 public static void requestNewForGetLogin(final Context context, final Handler handler, final String username, final String password) {
 2
 3                 try {
 4                     String path = "http://192.168.0.100:8080/Starry/servlet/LoginServlet?username=" + URLEncoder.encode(username,"utf-8") + "&pwd=" + URLEncoder.encode(password,"utf-8");
 5                     //创建一个AsyncHttpClient对象
 6                     System.out.println(path);
 7                     AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
 8                     asyncHttpClient.get(path, new AsyncHttpResponseHandler() {
 9
10                         @Override
11                         public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
12                             if(statusCode == 200) {
13                                 try {
14                                     String result = new String(responseBody,"utf-8");
15                                     Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
16                                 } catch (UnsupportedEncodingException e) {
17                                     e.printStackTrace();
18                                 }
19
20                             }
21                         }
22
23                         @Override
24                         public void onFailure(int statusCode, Header[] headers,
25                                 byte[] responseBody, Throwable error) {
26                             System.out.println(".............Failure");
27                         }
28                     });
29                 } catch (Exception e) {
30                     e.printStackTrace();
31                 }
32     }

AsyncHttpClient的post方式:

与get相似,只需要传参数进去,用RequestParams类传参数

RequestParams params = new RequestParams();
        params.put("username", username);
        params.put("pwd", password);

完整的方法:

 1 public static void requestNewForPostLogin(final Context context, final Handler handler, final String username, final String password) {
 2         final String path = "http://192.168.0.100:8080/Starry/servlet/LoginServlet"; // Post
 3         AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
 4
 5         RequestParams params = new RequestParams();
 6         params.put("username", username);
 7         params.put("pwd", password);
 8         asyncHttpClient.post(path, params, new AsyncHttpResponseHandler() {
 9
10             @Override
11             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
12                 if(statusCode == 200) {
13                     try {
14                         String result = new String(responseBody,"utf-8");
15                         Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
16                     } catch (UnsupportedEncodingException e) {
17                         e.printStackTrace();
18                     }
19
20                 }
21             }
22
23             @Override
24             public void onFailure(int statusCode, Header[] headers,
25                     byte[] responseBody, Throwable error) {
26                 System.out.println(".............Failure");
27             }
28         });
29     }

时间: 2024-10-05 00:25:52

HttpClient和AsynchttpClient的get与post请求方式的相关文章

HttpClient 的GET(带参数)、POST请求方式,工具类方法

/** * 连接/断开操作 post方式 * @param url * @param json */ private boolean connOrDisconnOperator(String url,String json){ CloseableHttpClient client = null; CloseableHttpResponse response = null; boolean flag = false; try{ HttpPost httpPost = new HttpPost(ur

如何使用HttpClient来发送带客户端证书的请求,以及如何忽略掉对服务器端证书的校验

最近要做客户端和服务器端的双向认证,在客户端向服务器端发送带证书的请求这里有一点问题,网上的例子大多都不太好使,于是找了github上httpclient源代码中的例子改造了一下,终于弄明白了 github上我参考的例子在:https://github.com/apache/httpclient/blob/4.5.x/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java 下面先贴上我自己的代码(需

接口测试——httpclient介绍与请求方式详解

httpClient工具介绍 HTTP协议可能是现在lntemet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源.虽然在JDK的java.net包中已经提供了访问http协议的基木功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活.HttpClient是ApaChe.JakamComnmn下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP协议的客户端编程工具包,并且它支持HTTP办议最新的版术和建议. httpCli

httpclient介绍与请求方式详解

httpClient工具介绍 HTTP协议可能是现在lntemet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源.虽然在JDK的java.net包中已经提供了访问http协议的基木功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活.HttpClient是ApaChe.JakamComnmn下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP协议的客户端编程工具包,并且它支持HTTP办议最新的版术和建议. httpCli

Android之Http通信——3.Android HTTP请求方式:HttpURLConnection

3.Android HTTP请求方式之HttpURLConnection 引言: 好了,前两节我们已经对HTTP协议进行了学习,相信看完前两节的朋友对HTTP协议相比之前 应该更加熟悉吧,好吧,学了要用,相信很多人都知道Android中HTTP的两种最基本的请求方式 他们分别是:HttpURLConnection和HttpClient,当然了解了最基本的两个后,我们实际开发中 可能并不会自己去慢慢写网络请求的代码,毕竟根据不同的web端接口,我们需要组织不同的数据 内容上传,这明显会增加我们的代

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用中使用AsyncHttpClient来异步网络数据 http://blog.csdn.net/sdvch/article/details/13615605 Android中的几种网络请求方式详解,布布扣,bubuko.com

javaweb解决post和get请求方式中文乱码问题(通用)

添加一个过滤器,解决乱码问题,代码如下: 1 import java.io.IOException; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Map; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet

HTTP深入浅出之http请求和15中以上的请求方式

HTTP的介绍及其通信机制 HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HT

jQuery中ajax的4种常用请求方式

jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息.详细参数选项见下. 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml"). 实例: 保存数据到服务器,成功时显示信息. $.ajax({ type: "post", dataType: "