您的位置:首页 > 其它

文章标题

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 {

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;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: