HttpURLConnection和HttpClient使用

HttpURLConnection

这是Java的标准类,继承自URLConnection,可用于向指定网站发送GET/POST请求。

方法描述

void setRequestMethod(String method)
设置请求的方法,注意参数必须全大写;

void setFollowRedirects(boolean set)
设置是否自动重定向,默认是true;

void setRequestProperty(String key, String value)
设置请求的header;

使用步骤

第一步 使用java.net.URL封装HTTP资源的url,并使用openConnection方法获得HttpURLConnection对象;
第二步 设置请求方法,setRequestMethod(“POST”);
第三步 设置输入输出和其它权限;
第四步 设置http请求头,setRequestProperty(“Charset”, ‘UTF-8″);
第五步 输入和输出数据;对InputStream和OutputStream的读写操作。
第六步 关闭输入和输出流。

示例代码如下:

    private void sendPost() { HttpURLConnection connection = null; BufferedWriter writer = null; try { URL url = new URL("http", "www.baidu.com", 80, "/"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(false); connection.setDoInput(true); connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Charset", "UTF-8"); OutputStream os = connection.getOutputStream(); writer = new BufferedWriter(new OutputStreamWriter(os)); writer.write("user=chen&pass=ya"); writer.flush(); connection.connect(); if (connection.getResponseCode() == 200) { recv(connection.getInputStream()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } if (connection != null) { connection.disconnect(); } } } private void recv(@NonNull InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); try { String content; while ((content = reader.readLine()) != null) { System.out.println("recv: " + content); } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } 

HttpClient

是Apache包的一个Http请求库,封装了很多功能(如:cookie管理),Android 5.0开始已经将此库移除了sdk。

作者:Charein

链接:https://www.jianshu.com/p/93518011e4c3

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。