老师,这里报的是执行doInBackground报的错误,但是我找不到错在哪

老师,这里报的是执行doInBackground报的错误,但是我找不到错在哪

public class RequestDataAsyncTask extends AsyncTask<Void,Void,String>{
   @Override
   protected String doInBackground(Void... voids) {
       return request("http://www.imooc.com/api/shopping?type=11");
   }
   private String request(String urlString) {
       try {
           URL url = new URL(urlString);
           HttpURLConnection connection = (HttpURLConnection) url.openConnection();

           connection.setConnectTimeout(30000);
           connection.setRequestMethod("GET");
           connection.connect();

           int responseCode = connection.getResponseCode();
           if(responseCode==HttpURLConnection.HTTP_OK){
               InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream());
               BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
               StringBuilder stringBuilder = new StringBuilder();
               String line;
               while((line = bufferedReader.readLine())!=null){
                   stringBuilder.append(line);
               }
               bufferedReader.close();
               inputStreamReader.close();
               return stringBuilder.toString();

           }
       } catch (MalformedURLException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
       return null;
   }

   @Override
   protected void onPostExecute(String result) {
       super.onPostExecute(result);
       //Loading消失,数据处理 刷新界面
       FoodResult foodResult = new FoodResult();
       try {
           JSONObject  jsonObject = new JSONObject(result);
           final int status = jsonObject.getInt("status");
           final String msg = jsonObject.getString("msg");
           foodResult.setmStatus(status);
           foodResult.setmMessage(msg);

           List<FoodInfo> foodInfoList = new ArrayList<>();
           JSONArray dataArray = jsonObject.getJSONArray("data");
           for (int index = 0; index < dataArray.length(); index++) {
               FoodInfo foodInfo = new FoodInfo();
               JSONObject tempJSONObject = (JSONObject)dataArray.get(index);
               final String name = tempJSONObject.getString("name");
               foodInfo.setmName(name);
               foodInfoList.add(foodInfo);
           }
           foodResult.setmLessonInfoList(foodInfoList);
       } catch (JSONException e) {
           e.printStackTrace();
       }
       //List<data>  item.view
       main_list_view.setAdapter(new FoodAdapter(MainActivity.this,foodResult.getmLessonInfoList()));
   }
}

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

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

2回答
提问者 追梦不再迷茫 2017-12-04 10:54:41

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

老师 我今早换了个类进行测试,还是一样的问题 

我照着之前学习的ListView课程打了好几遍了...

  • 网络的问题,”eai-nodata no address associated with hostname“。1)看看你有没有申请网络权限。2)在手机的浏览器中看能不能打开"http://www.imooc.com/api/shopping?type=11"这个地址。3)当手机报错的时候同时测试,电脑与手机的浏览器是否可以打开上面的地址。4)TestOneActivity的第56行看看执行的什么代码。
    2017-12-04 14:25:18
  • 提问者 追梦不再迷茫 回复 好帮手慕雪 #2
    我眼瞎啊。。。
    2017-12-04 14:48:19
  • 好帮手慕雪 回复 提问者 追梦不再迷茫 #3
    可以运行了?
    2017-12-04 15:59:17
好帮手慕雪 2017-12-04 10:38:25

报的什么错?doInBackground()就一行代码,那就是request()了,看着也没错,你先看看request()返给onPostExecute()的result是什么?并把log贴一下。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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