Android与服务器http连接模块代码

Posted on 2016-01-05 17:10  TongMeng  阅读(914)  评论(0编辑  收藏  举报

  1 package com.example.httpdemo2;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.IOException;
  5 import java.io.InputStream;
  6 import java.io.InputStreamReader;
  7 import java.io.UnsupportedEncodingException;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10 
 11 import org.apache.http.HttpEntity;
 12 import org.apache.http.HttpResponse;
 13 import org.apache.http.NameValuePair;
 14 import org.apache.http.client.HttpClient;
 15 import org.apache.http.client.entity.UrlEncodedFormEntity;
 16 import org.apache.http.client.methods.HttpGet;
 17 import org.apache.http.client.methods.HttpPost;
 18 import org.apache.http.impl.client.DefaultHttpClient;
 19 import org.apache.http.message.BasicNameValuePair;
 20 
 21 import android.os.Bundle;
 22 import android.app.Activity;
 23 import android.util.Log;
 24 import android.view.Menu;
 25 import android.view.View;
 26 import android.view.View.OnClickListener;
 27 import android.widget.Button;
 28 import android.widget.EditText;
 29 import android.widget.TextView;
 30 
 31 public class HttpDemo2Activity extends Activity
 32 {
 33     private String TAG = "http";
 34     private EditText mNameText = null;
 35     private EditText mAgeText = null;
 36 
 37     private Button getButton = null;
 38     private Button postButton = null;
 39 
 40     private TextView mResult = null;
 41 
 42     // 基本地址:服务器ip地址:端口号/Web项目逻辑地址+目标页面(Servlet)的url-pattern
 43     private String baseURL = "http://192.168.11.6:8080/HelloWeb/servlet/WelcomeUserServlet";
 44 
 45     @Override
 46     protected void onCreate(Bundle savedInstanceState)
 47     {
 48         Log.i(TAG, "onCreate");
 49         super.onCreate(savedInstanceState);
 50         setContentView(R.layout.activity_http_demo2);
 51 
 52         mNameText = (EditText) findViewById(R.id.name);
 53         mAgeText = (EditText) findViewById(R.id.age);
 54         mResult = (TextView) findViewById(R.id.result);
 55 
 56         getButton = (Button) findViewById(R.id.submit_get);
 57         getButton.setOnClickListener(mGetClickListener);
 58         postButton = (Button) findViewById(R.id.submit_post);
 59         postButton.setOnClickListener(mPostClickListener);
 60     }
 61 
 62     private OnClickListener mGetClickListener = new View.OnClickListener()
 63     {
 64 
 65         @Override
 66         public void onClick(View v)
 67         {
 68             Log.i(TAG, "GET request");
 69             // 先获取用户名和年龄
 70             String name = mNameText.getText().toString();
 71             String age = mAgeText.getText().toString();
 72 
 73             // 使用GET方法发送请求,需要把参数加在URL后面,用?连接,参数之间用&分隔
 74             String url = baseURL + "?username=" + name + "&age=" + age;
 75 
 76             // 生成请求对象
 77             HttpGet httpGet = new HttpGet(url);
 78             HttpClient httpClient = new DefaultHttpClient();
 79 
 80             // 发送请求
 81             try
 82             {
 83 
 84                 HttpResponse response = httpClient.execute(httpGet);
 85 
 86                 // 显示响应
 87                 showResponseResult(response);// 一个私有方法,将响应结果显示出来
 88 
 89             }
 90             catch (Exception e)
 91             {
 92                 e.printStackTrace();
 93             }
 94 
 95         }
 96     };
 97 
 98     private OnClickListener mPostClickListener = new View.OnClickListener()
 99     {
100 
101         @Override
102         public void onClick(View v)
103         {
104             Log.i(TAG, "POST request");
105             // 先获取用户名和年龄
106             String name = mNameText.getText().toString();
107             String age = mAgeText.getText().toString();
108 
109             NameValuePair pair1 = new BasicNameValuePair("username", name);
110             NameValuePair pair2 = new BasicNameValuePair("age", age);
111 
112             List<NameValuePair> pairList = new ArrayList<NameValuePair>();
113             pairList.add(pair1);
114             pairList.add(pair2);
115 
116             try
117             {
118                 HttpEntity requestHttpEntity = new UrlEncodedFormEntity(
119                         pairList);
120                 // URL使用基本URL即可,其中不需要加参数
121                 HttpPost httpPost = new HttpPost(baseURL);
122                 // 将请求体内容加入请求中
123                 httpPost.setEntity(requestHttpEntity);
124                 // 需要客户端对象来发送请求
125                 HttpClient httpClient = new DefaultHttpClient();
126                 // 发送请求
127                 HttpResponse response = httpClient.execute(httpPost);
128                 // 显示响应
129                 showResponseResult(response);
130             }
131             catch (Exception e)
132             {
133                 e.printStackTrace();
134             }
135 
136         }
137     };
138 
139     /**
140      * 显示响应结果到命令行和TextView
141      * @param response
142      */
143     private void showResponseResult(HttpResponse response)
144     {
145         if (null == response)
146         {
147             return;
148         }
149 
150         HttpEntity httpEntity = response.getEntity();
151         try
152         {
153             InputStream inputStream = httpEntity.getContent();
154             BufferedReader reader = new BufferedReader(new InputStreamReader(
155                     inputStream));
156             String result = "";
157             String line = "";
158             while (null != (line = reader.readLine()))
159             {
160                 result += line;
161 
162             }
163 
164             System.out.println(result);
165             mResult.setText("Response Content from server: " + result);
166         }
167         catch (Exception e)
168         {
169             e.printStackTrace();
170         }
171 
172     }
173 
174 }

 

 

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Username:" />

<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="User Age:" />

<EditText
android:id="@+id/age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />

<Button
android:id="@+id/submit_get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit using GET" />

<Button
android:id="@+id/submit_post"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit using POST" />

<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#0000FF"
android:textSize="14sp" >
</TextView>

</LinearLayout>

 

须在androidMenifest中配置联网权限;