HttpURLConnection连接网络问题

HttpURLConnection连接网络问题

错误提示如下:

HttpURLConnection连接网络时,提示“Cleartext HTTP traffic to www.imooc.com not permitted ”

代码如下:

package util;

import android.content.Context;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpUtil {

   public static String getDataFromNet(String urlStr){
       try {
           URL url = new URL(urlStr);
           HttpURLConnection conn = (HttpURLConnection) url.openConnection();
           conn.setConnectTimeout(30*1000);
           conn.setRequestMethod("GET");
           conn.connect();
           //如果请求成功,则读取数据
           if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
               InputStreamReader inputStreamReader = new InputStreamReader(conn.getInputStream());
               BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
               StringBuilder stringBuilder = new StringBuilder();
               String line;
               while((line = bufferedReader.readLine())!=null){
                   stringBuilder.append(line);
               }
               inputStreamReader.close();
               bufferedReader.close();
               conn.disconnect();
               return stringBuilder.toString();
           }
       } catch (MalformedURLException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
       return null;
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 小汤圆学编程 2019-01-23 17:49:38
  • 提问者 小汤圆学编程 #1
    我这到conn.connect()这就报错
    2019-01-23 17:50:33
  • irista23 回复 提问者 小汤圆学编程 #2
    http请求改成https,或者把targetSdkVersion降到27或以下版本再试一下
    2019-01-23 18:56:02
  • 提问者 小汤圆学编程 回复 irista23 #3
    为什么把targetSdkVersion降低到27以下就可以呢?
    2019-01-23 21:05:55
irista23 2019-01-23 17:07:53

老师使用你的网络处理代码可以正常取到值的,你取不到确定清单文件添加网络权限了?

http://img1.sycdn.imooc.com//climg/5c482ea400017b5514440430.jpg

irista23 2019-01-18 14:26:54

老师使用的"http://www.imooc.com/api/teacher?type=2&page=1"这个地址,在清单文件中添加了网络权限,并且把你的getDataFromNet()代码放到了单独的线程里,运行是可以正常获取数据的,可以按照老师的方式再运行测试下

  • 提问者 小汤圆学编程 #1
    按照你的方法修改了,还是提示上面的问题
    2019-01-23 15:09:55
  • irista23 回复 提问者 小汤圆学编程 #2
    你是在创建的子线程中调用的上述方法吗?
    2019-01-23 15:11:30
  • 提问者 小汤圆学编程 回复 irista23 #3
    采用继承AsyncTask类,在DoInBack方法中写的上述方法
    2019-01-23 16:17:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android网络操作与数据存储2018版
  • 参与学习           人
  • 提交作业       307    份
  • 解答问题       1613    个

本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师