【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>
浙公网安备 33010602011771号