android利用HttpClient发送请求
这几天去看面试,结果被要求写代码。各种知识点真是各种忘记啊..所以慢慢的把一些知识点给记下来。
其实在android发送HTTP请求,我觉得用HttpClient比HttpUrlConnetion方便多了,也简单多了。下面就开始吧
首先是GET请求,
1、如果有参数把参数给准备好。
List<NameValuePair> params = new ArrayList<NameValuePair>();
2、建一个HttpGet请求
HttpGet request = new HttpGet(url + "?" + param);
3、实例客户端HttpClient
HttpClient client = new DefaultHttpClient();
4、客户端发送HttpGet请求,返回HttpResponse
HttpResponse response = client.execute(request);
5、得到HttpEntity
HttpEntity entity = response.getEntity();
6、HttpEntity有两个方法
toString() 如果你服务器返回的是字符串,这样子就可以拿出来了
getContent() 返回一个InputStream(之后你想怎么搞就怎么搞了)
OVER了
public String sendByGet() { //新建参数 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("method", "get")); //UTF-8编码 String param = URLEncodedUtils.format(params, "UTF-8"); //建立一个get请求 HttpGet request = new HttpGet(url + "?" + param); //实例化client HttpClient client = new DefaultHttpClient(); try { //Client执行get请求 HttpResponse response = client.execute(request); //得到HttpEntity HttpEntity entity = response.getEntity(); //把输入流的东东变成文件 IOUtil.input2File(entity.getContent(), filePath,"song.xml"); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
再来就是POST请求了
POST请求也差不多,
1、如果有参数把参数给准备好。
List<NameValuePair> params = new ArrayList<NameValuePair>();
2、建一个HttpPost请求
HttpPost request = new HttpPost(url);
3、给POST请求设置参数(跟GET不同就这里)
request.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
4、实例客户端HttpClient
HttpClient client = new DefaultHttpClient();
5、客户端发送HttpGet请求,返回HttpResponse
HttpResponse response = client.execute(request);
6、得到HttpEntity
HttpEntity entity = response.getEntity();
7、HttpEntity有两个方法
toString() 如果你服务器返回的是字符串,这样子就可以拿出来了
public String sendByPost() { DefaultHttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost(url); List<NameValuePair> params = new ArrayList<NameValuePair>(); // 或者用 // params.add(new BasicNameValuePair("", "")); params.add(new NameValuePair() { @Override public String getValue() { return "i am postMethod"; } @Override public String getName() { return "value"; } }); try { // UTF8编码 request.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); HttpResponse resp = client.execute(request); Log.i("http", String.valueOf(resp.getStatusLine().getStatusCode())); // 200为成功 if (resp.getStatusLine().getStatusCode() == 200) { // resp.getEntity只能调用一次 HttpEntity entity = resp.getEntity(); String xml = IOUtil.input2String(entity.getContent()); System.out.println(xml); return xml; } } catch (IOException e) { e.printStackTrace(); } return null; }
就这么简单了...
积一时之跬步,臻千里之遥程
相关推荐
创建一个 HttpClient 实例,这个实例需要调用 Dispose 方法释放资源,这里使用了 using 语句。接着调用 GetAsync,给它传递要调用的方法的地址,向服务器发送 Get 请求。