扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Android中怎么利用HttpURLConnection访问网络,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
专注于为中小企业提供成都网站设计、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业凉城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。一、 HttpURLConnection以GET方式访问网络:
HttpURLConnection connection = null; try { URL url = new URL("https://www.xxx.com/"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET");//设置访问方式为“GET” connection.setConnectTimeout(8000);//设置连接服务器超时时间为8秒 connection.setReadTimeout(8000);//设置读取服务器数据超时时间为8秒 if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) { //从服务器获取响应并把响应数据转为字符串打印 InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while (null != (line = reader.readLine())) { response.append(line); } Log.d(TAG, response.toString()); } } catch (Exception e) { e.printStackTrace(); } finally { if (null!= connection) { connection.disconnect(); } }
二、 HttpURLConnection以POST方式访问网络:
HttpURLConnection connection = null; try{ URL url = new URL("https://www.xxx.com/"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); connection.setDoOutput(true);// 使用 URL 连接进行输出 connection.setDoInput(true);// 使用 URL 连接进行输入 connection.setUseCaches(false);// 忽略缓存 // 建立输出流,并写入数据 OutputStream outputStream = connection.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.writeBytes("username=admin&password=888888"); dataOutputStream.close(); if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) { // 当正确响应时处理数据 StringBuffer response = new StringBuffer(); String line; BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); // 处理响应流,必须与服务器响应流输出的编码一致 while (null != (line = responseReader.readLine())) { response.append(line); } responseReader.close(); Log.d(TAG, response.toString()); } } catch (Exception e) { e.printStackTrace(); } finally { if (null!= connection) { connection.disconnect(); } }
注意:
1. HTTP访问是不允许在主线程进行的,否则会报错。因此上面的操作应该在新线程中进行。
2. 一般要用HttpURLConnection.getResponseCode() == 200来判断是否正常响应。为true则正常响应。
3. 在Android 2.2及以下版本,使用的是HttpClient,Android 2.3及以上版本,使用的是HttpURLConnection,而Android5.1之后废弃了HttpClient的相关Api。因此HttpClient用法不再进行研究。
4. 以POST方式提交数据时,每条数据要以键值对的方式提交,各条数据之间以&隔开。比如上面的代码中dataOutputStream.writeBytes(“username=admin&password=888888”);
5. 上面用到了StringBuilder和StringBuffer,没有什么特别用意,只是顺便用下。StringBuilder在单线程下比StringBuffer更高效,但不是线程安全的。
关于Android中怎么利用HttpURLConnection访问网络问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流