android httpclient 字符编码,Android提交数据之HttpClient

释放双眼,带上耳机,听听看~!

Android提交数据之HttpClient

public class MainActivity extends Activity {

private EditText et_username;

private EditText et_password;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// [1]找到我们关心的控件

et_username = (EditText) findViewById(R.id.et_username);

et_password = (EditText) findViewById(R.id.et_password);

}

// 点击按钮 进行get方式提交数据

public void click1(View v) {

new Thread(){public void run() {

try {

String name = et_username.getText().toString().trim();

String pwd = et_password.getText().toString().trim();

//[2.1]定义get方式要提交的路径 小细节 如果提交中文要对name 和 pwd 进行一个urlencode 编码

String path = "http://192.168.11.73:8080/login/LoginServlet?username="+URLEncoder.encode(name, "utf-8")+"&password="+URLEncoder.encode(pwd, "utf-8")+"";

//[3]获取httpclient实例

DefaultHttpClient client = new DefaultHttpClient();

//[3.1]准备get请求 定义 一个httpget实现

HttpGet get = new HttpGet(path);

//[3.2]执行一个get请求

HttpResponse response = client.execute(get);

//[4]获取服务器返回的状态码

int code = response.getStatusLine().getStatusCode();

if (code == 200) {

//[5]获取服务器返回的数据 以流的形式返回

InputStream inputStream = response.getEntity().getContent();

//[6]把流转换成字符串

String content = StreamTools.readStream(inputStream);

//[7]展示结果

showToast(content);

}

} catch (Exception e) {

e.printStackTrace();

}

};}.start();

}

// [1]点击按钮 进行post方式提交数据

public void click2(View v) {

new Thread(){public void run() {

try {

//[2]获取用户名和密码

String name = et_username.getText().toString().trim();

String pwd = et_password.getText().toString().trim();

String path = "http://192.168.11.73:8080/login/LoginServlet";

//[3]以httpClient 方式进行post 提交

DefaultHttpClient client = new DefaultHttpClient();

//[3.1]准备post 请求

HttpPost post = new HttpPost(path);

//[3.1.0]准备parameters

List lists = new ArrayList();

//[3.1.1]准备 NameValuePair 实际上就是我们要提交的用户名 和密码 key是服务器key :username

BasicNameValuePair nameValuePair = new BasicNameValuePair("username",name);

BasicNameValuePair pwdValuePair = new BasicNameValuePair("password",pwd);

//[3.1.3] 把nameValuePair 和 pwdValuePair 加入到集合中

lists.add(nameValuePair);

lists.add(pwdValuePair);

//[3.1.3]准备entity

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(lists);

//[3.2]准备post方式提交的正文 以实体形式准备 (键值对形式 )

post.setEntity(entity);

HttpResponse response = client.execute(post);

//[4]获取服务器返回的状态码

int code = response.getStatusLine().getStatusCode();

if (code == 200) {

//[5]获取服务器返回的数据 以流的形式返回

InputStream inputStream = response.getEntity().getContent();

//[6]把流转换成字符串

String content = StreamTools.readStream(inputStream);

//[7]展示结果

showToast(content);

}

} catch (Exception e) {

e.printStackTrace();

}

};}.start();

}

//封装toast方法 该toast方法执行在主线程

public void showToast(final String content){

runOnUiThread(new Runnable() {

@Override

public void run() {

//该方法一定是执行主线程

Toast.makeText(getApplicationContext(), content, 1).show();

}

});

}

}

把一个inputstream转化成一个string

public class StreamTools {

//把一个inputStream 转换成一个String

public static String readStream(InputStream in) throws Exception{

//定义一个内存输出流

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int len = -1;

byte[] buffer = new byte[1024]; //1kb

while((len=in.read(buffer))!=-1){

baos.write(buffer, 0, len);

}

in.close();

String content = new String(baos.toByteArray(),"gbk");

return content;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值