【Android学习】第八章 · 同步和异步Httpclient通过get和post方式发送请求

Httpclient通过get和post方式发送请求

 

public void getClick(View v){

EditText et1 = (EditText)findViewById(R.id.name);

String name = et1.getText().toString();

EditText et2 = (EditText)findViewById(R.id.pass);

String pass = et2.getText().toString();

try {

final String path = "http://169.254.165.163:8080/Web2/servlet/Login?"+"name="+URLEncoder.encode(name,"utf-8")+"&pass="+pass;

Thread thread = new Thread(){

public void run() {

try {

//新建一个客户端请求

HttpClient client = new DefaultHttpClient();

//创建一个get请求对象

HttpGet get = new HttpGet(path);

//客户端像服务器发送get请求,获取客户端的响应

HttpResponse response = client.execute(get);

//获取状态行

StatusLine line = response.getStatusLine();

//获取状态码

int code = line.getStatusCode();

if(code==200){

//获取实体

HttpEntity entity = response.getEntity();

//从实体里获取输入流

InputStream is = entity.getContent();

byte[] b = new byte[1024];

int len;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

while((len=is.read(b))!=-1){

bos.write(b,0,len);

}

String str = bos.toString("UTF-8");

Message msg = new Message();

msg.obj = str;

handler.sendMessage(msg);

}

}catch (Exception e) {

e.printStackTrace();

}

}

};

thread.start();

} catch (Exception e) {

e.printStackTrace();

}



}



public void postClick(View v){

try {

final String path = "http://169.254.165.163:8080/Web2/servlet/Login";

Thread thread = new Thread(){

public void run() {

EditText et1 = (EditText)findViewById(R.id.name);

String name = et1.getText().toString();

EditText et2 = (EditText)findViewById(R.id.pass);

String pass = et2.getText().toString();

HttpClient client = new DefaultHttpClient();

//新建一个post请求

HttpPost post = new HttpPost(path);

//把要提交的数据封装到post中

List<NameValuePair> parameters = new ArrayList<NameValuePair>();

//arg[0]:表单的名字

//arg[1]:表单的内容

BasicNameValuePair bnvp1 = new BasicNameValuePair("name", name);

BasicNameValuePair bnvp2 = new BasicNameValuePair("pass", pass);

parameters.add(bnvp1);

parameters.add(bnvp2);

UrlEncodedFormEntity entity = null;

try {

//提交表单专门的entity

entity = new UrlEncodedFormEntity(parameters, "utf-8");

//把实体对象封装到post中

post.setEntity(entity);

//发送请求,获取响应

HttpResponse response = client.execute(post);

StatusLine line = response.getStatusLine();

int code = line.getStatusCode();

if(code==200){

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

byte[] b = new byte[1024];

int len;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

while((len=is.read(b))!=-1){

bos.write(b,0,len);

}

String str = bos.toString("UTF-8");

Message msg = new Message();

msg.obj = str;

handler.sendMessage(msg);

}

} catch (Exception e) {

e.printStackTrace();

}



};

};

thread.start();

}catch (Exception e) {

e.printStackTrace();

}

}

}

 

异步HttpClient发送get与post请求(导入源码android-async-http-master)

 

实现发法可以参考example内容

最终实现:

public void getClick(View v) throws Exception{

EditText et1 = (EditText)findViewById(R.id.name);

String name = et1.getText().toString();

EditText et2 = (EditText)findViewById(R.id.pass);

String pass = et2.getText().toString();

final String path = "http://169.254.165.163:8080/Web2/servlet/Login";

//新建一个异步处理客户端请求

AsyncHttpClient client = new AsyncHttpClient();

//设置请求属性

RequestParams rp = new RequestParams();

rp.put("name", name);

rp.put("pass", pass);

//用对应方法发送请求

client.get(path,rp,new MyHandler());

}

class MyHandler extends AsyncHttpResponseHandler{

@Override

public void onSuccess(int statusCode, Header[] headers,

byte[] responseBody) {

Toast.makeText(MainActivity.this, new String(responseBody), 0).show();

}

@Override

public void onFailure(int statusCode, Header[] headers,

byte[] responseBody, Throwable error) {

Toast.makeText(MainActivity.this, "连接失败", 0).show();

}

}

public void postClick(View v) throws Exception{

EditText et1 = (EditText)findViewById(R.id.name);

String name = et1.getText().toString();

EditText et2 = (EditText)findViewById(R.id.pass);

String pass = et2.getText().toString();

final String path = "http://169.254.165.163:8080/Web2/servlet/Login";

//新建一个异步处理客户端请求

AsyncHttpClient client = new AsyncHttpClient();

RequestParams rp = new RequestParams();

rp.put("name", name);

rp.put("pass", pass);

client.post(path,rp,new MyHandler());

}

}

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值