ApachehttpClient是谷歌官方的http请求,Eclipse自带有,但是AS好像没有(还是我的AS版本问题)。它比httpURLConnection请求更简单。
post请求相对get就是参数有变化
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void getResult() {
new Thread(new Runnable() {
@Override
public void run() {
String spec = "http://187.1.1.1:8080/";
try {
// 创建请求对象
HttpGet get = new HttpGet(spec);
// 创建Http客户端对象
HttpClient client = new DefaultHttpClient();// 接口不能new
// 向服务器发送请求并返回相应对象
HttpResponse execute = client.execute(get);// 请求的方式
// 获取返回的状态码
int code = execute.getStatusLine().getStatusCode();
switch (code) {
case HttpStatus.SC_OK:
// 200
HttpEntity entity = execute.getEntity();// 获取实体
String result = EntityUtils.toString(entity);// 将实体通过实体工具转成string
break;
case HttpStatus.SC_NOT_FOUND:
// 404
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private void setResult() {
// post请求
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
String spec = "http://187.1.1.1:8080/";
HttpPost post = new HttpPost(spec);
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", "name"));
params.add(new BasicNameValuePair("password", "pw"));
HttpEntity entity;
entity = new UrlEncodedFormEntity(params);
post.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse execute = client.execute(post);
int code = execute.getStatusLine().getStatusCode();
switch (code) {
case HttpStatus.SC_OK:
// 200
HttpEntity entity2 = execute.getEntity();
String result = EntityUtils.toString(entity2);// 将实体通过实体工具转成string
break;
case HttpStatus.SC_NOT_FOUND:
// 404
break;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}