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

就这么简单了...

  

积一时之跬步,臻千里之遥程

相关推荐