文章标题
2017-09-05 13:55
288 查看
package com.example.a03_httpclient_get_post;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
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 java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* httpClient的get和post请求
*/
public class MainActivity extends AppCompatActivity {
}
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
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 java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* httpClient的get和post请求
*/
public class MainActivity extends AppCompatActivity {
private EditText edit_01; private EditText edit_02; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0){ Toast.makeText(MainActivity.this,(String)msg.obj,Toast.LENGTH_SHORT).show(); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit_01 = (EditText) findViewById(R.id.edit_01); edit_02 = (EditText) findViewById(R.id.edit_02); } /** * get登录的点击事件 * @param view */ public void getLogin(View view){ getLogin(); } public void postLogin(View view){ postLogin(); } /** * httpPost方式登录 */ private void postLogin() { new Thread(){ @Override public void run() { try { //1.创建客户端 HttpClient client = new DefaultHttpClient(); String postPath = "http://192.168.43.146:8080/ServletDemo0402/login"; //2.创建一个httpPost请求对象 HttpPost httpPost = new HttpPost(postPath); //post方式需要给服务器传递参数...在请求的实体内容里面...UrlEncodedFormEntity实现类,使用url编码的form表单形式的实体内容对象 //(params,表示传递的参数"utf-8"表示参数的编码格式...NameValuePair泛型是键值对的形式...BasicNameValuePair子类 List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(); params.add(new BasicNameValuePair("username",edit_01.getText().toString())); params.add(new BasicNameValuePair("password",edit_02.getText().toString())); HttpEntity entity = new UrlEncodedFormEntity(params,"utf-8"); //3.设置请求的实体内容对象 httpPost.setEntity(entity); //4.执行post请求 HttpResponse response = client.execute(httpPost); //5.获取状态码 int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200){ InputStream inputStream = response.getEntity().getContent(); String s = streamToString(inputStream,"utf-8"); //吐司显示服务器返回的内容 //Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show(); Message message = Message.obtain(); message.what = 0; message.obj = s; handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } /** * 使用httpClient进行get登录 */ private void getLogin() { new Thread(){ @Override public void run() { try { //1.创建一个httpClient客户端对象...HttpClient是一个接口..DefaultHttpClient实现类 HttpClient client = new DefaultHttpClient(); //路径不再需要转为url,直接使用字符串即可 String path = "http://192.168.43.146:8080/ServletDemo0402/login?username="+edit_01.getText().toString()+"&password="+edit_02.getText().toString(); //2.创建一个httpGet请求对象 HttpGet httpGet = new HttpGet(path); //3.使用客户端对象执行一个get请求...返回值是一个响应的对象 HttpResponse response = client.execute(httpGet); //4.获取响应码....先拿到响应状态行,,,在拿到响应的状态码 int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200){ //5.以流的形式获取服务器写回的内容...先拿到响应的实体内容对象,,,再拿响应的实体内容 InputStream inputStream = response.getEntity().getContent(); String s = streamToString(inputStream,"utf-8"); //吐司显示服务器返回的内容 //Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show(); Message message = Message.obtain(); message.what = 0; 4000 message.obj = s; handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
}