0

问题解决了。原因是我忘记给应用程序授予 Internet 权限。

我要实现的基本功能是

  1. 获取 URL 并连接到远程服务器
  2. 从远程服务器获取结果并在 TextView 上显示结果

我使用 asynctask 从远程服务器加载结果。但是,我已经调试以下代码几个小时,仍然不知道哪里出了问题。谁能帮我吗?

private class ReportLocationTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {

            try {
                return reportLoc(urls[0]);
            } catch (IOException e) {
                return getResources().getString(R.string.connection_error);
            } 
        }

        @Override
        protected void onPostExecute(String result) {

            mActivityIndicator.setVisibility(View.GONE);
            mReport.setText(result);
        }
    }

    private String reportLoc(String urlstring) throws IOException{

        URL url = new URL(urlstring);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();



        try{
        InputStream in = new BufferedInputStream(conn.getInputStream());

        InputStreamReader is = new InputStreamReader(in);
        StringBuilder sb=new StringBuilder();
        BufferedReader br = new BufferedReader(is);
        String read = br.readLine();

        while(read != null) {
            //System.out.println(read);
            sb.append(read);
            read =br.readLine();

        }

        return sb.toString();
        }
        finally {
            conn.disconnect();
            }

    }
4

1 回答 1

1

您还没有指定请求方法。我假设您想从服务器获取结果。

   HttpURLConnection conn = (HttpURLConnection ) url.openConnection();
   conn.setRequestMethod("GET");
   conn.setReadTimeout(10000); // millis
   conn.setConnectTimeout(15000); // millis
   conn.setDoOutput(true);

   conn.connect();
   int response = conn.getResponseCode();
   if (response == HttpStatus.SC_OK) {
       .....
于 2013-05-30T16:04:34.400 回答