【0041】Android基础-29-asycnHttpClient做get,post请求(使用开源项目)

【说明】在公司做简单的网络请求是可以使用这种方法的,但是头信息包含的比较多的话,不可以使用该开源包;

【0】开源包下载地址:http://pan.baidu.com/s/1nvNySPj

【1】GET方式源码

 1     public static void requestNetForGetLogin(final Context context,final Handler handler ,final String username, final String password) {
 2                 //使用HttpClient请求服务器将用户密码发送服务器验证
 3                 try{
 4                 String path = "http://192.168.13.83:8080/itheima74/servlet/LoginServlet?username="+URLEncoder.encode(username,"utf-8")+"&pwd="+URLEncoder.encode(password,"utf-8");
 5         
 6                 //创建一个AsyncHttpClient对象
 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                         //statusCode:状态码    headers:头信息  responseBody:返回的内容,返回的实体
13                         //判断状态码
14                         if(statusCode == 200){
15                             //获取结果
16                             try {
17                                 String result = new String(responseBody,"utf-8");
18                                 Toast.makeText(context, result, 0).show();
19                             } catch (UnsupportedEncodingException e) {
20                                 // TODO Auto-generated catch block
21                                 e.printStackTrace();
22                             }
23                         }
24                     }
25                     
26                     @Override
27                     public void onFailure(int statusCode, Header[] headers,
28                             byte[] responseBody, Throwable error) {
29                         
30                         System.out.println("...............onFailure");
31                         
32                     }
33                 });
34                 }catch (Exception e) {
35                     e.printStackTrace();
36                 }
37     }

【2】POST方式源码

 1 public static void requestNetForPostLogin( final Context context,final Handler handler ,final String username, final String password) {
 2 
 3             String path = "http://192.168.13.83:8080/itheima74/servlet/LoginServlet";
 4                     
 5     
 6             AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
 7             RequestParams params = new RequestParams();
 8             params.put("username", username);
 9             params.put("pwd", password);
10             //url:   parmas:请求时携带的参数信息   responseHandler:是一个匿名内部类接受成功过失败
11             asyncHttpClient.post(path, params, new AsyncHttpResponseHandler() {
12                 
13                 @Override
14                 public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
15                     //statusCode:状态码    headers:头信息  responseBody:返回的内容,返回的实体
16                     
17                     //判断状态码
18                     if(statusCode == 200){
19                         //获取结果
20                         try {
21                             
22                             String result = new String(responseBody,"utf-8");
23                             Toast.makeText(context, result, 0).show();
24                         } catch (Exception e) {
25                             // TODO Auto-generated catch block
26                             e.printStackTrace();
27                         }
28                     }
29                     
30                 }
31                 
32                 @Override
33                 public void onFailure(int statusCode, Header[] headers,
34                         byte[] responseBody, Throwable error) {
35                     
36                 }
37             });
38 
39 
40     }

【3】本节源码下载地址:http://pan.baidu.com/s/1skTghvZ

【4】文件上传

【4.1】使用web端发生的上传文件界面:

【4.2】在文件上传时发生的数据包的信息:

【4.3】APP上传文件成功的效果

【4.4】需要使用第三方的包

【5】jar包的导出

【6】【源码】

 

 1 /*MianActivity.java*/
 2 package com.itheima.fileupload;
 3 
 4 import java.io.File;
 5 
 6 import org.apache.http.Header;
 7 
 8 import com.loopj.android.http.AsyncHttpClient;
 9 import com.loopj.android.http.AsyncHttpResponseHandler;
10 import com.loopj.android.http.RequestParams;
11 
12 import android.app.Activity;
13 import android.app.ProgressDialog;
14 import android.os.Bundle;
15 import android.view.View;
16 import android.widget.EditText;
17 import android.widget.Toast;
18 
19 public class MainActivity extends Activity {
20 
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25     }
26 
27     
28     
29     public void fileupload(View v){
30         try{
31         EditText et_filepath = (EditText) findViewById(R.id.et_filepath);
32         //获取输入的文件地址
33         String filepath = et_filepath.getText().toString().trim();
34         
35         //使用开源Utils做上传操作
36         AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
37         
38         RequestParams params = new RequestParams();
39         params.put("filename", new File(filepath));
40         //url : 请求服务器的url
41         asyncHttpClient.post("http://192.168.13.83:8080/itheima74/servlet/UploaderServlet", params, new AsyncHttpResponseHandler() {
42             
43             @Override
44             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
45                 if(statusCode == 200){
46                     Toast.makeText(MainActivity.this, "上传成功", 0).show();
47                 }
48             }
49             @Override
50             public void onFailure(int statusCode, Header[] headers,
51                     byte[] responseBody, Throwable error) {
52             }
53         });
54         
55         }catch (Exception e) {
56             e.printStackTrace();
57         }
58     }
59 
60 }

 

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <EditText
12         android:id="@+id/et_filepath"
13         android:layout_width="fill_parent"
14         android:layout_height="wrap_content" />
15 
16     <Button
17         android:onClick="fileupload"
18         android:text="上传"
19         android:layout_below="@id/et_filepath"
20         android:id="@+id/bt_upload"
21         android:layout_width="fill_parent"
22         android:layout_height="wrap_content" />
23 
24 </RelativeLayout>

 

posted @ 2017-10-25 11:32  OzTaking  阅读(349)  评论(0)    收藏  举报