Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这段代码在java中工作得很好,但在android中却不行_Android_Urlconnection - Fatal编程技术网

这段代码在java中工作得很好,但在android中却不行

这段代码在java中工作得很好,但在android中却不行,android,urlconnection,Android,Urlconnection,我在主线程的onCreate方法中调用它 StringBuilder content = new StringBuilder(); try { URL url = new URL("http://alvinalexander.com/blog/post/java/java-how-read-from-url-string-text"); URLConnection urlConnection = u

我在主线程的
onCreate
方法中调用它

        StringBuilder content = new StringBuilder();
        try
        {
            URL url = new URL("http://alvinalexander.com/blog/post/java/java-how-read-from-url-string-text");

            URLConnection urlConnection = url.openConnection();

            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

            String line;
            while ((line = bufferedReader.readLine()) != null)
            {
                content.append(line + "\n");
            }
            bufferedReader.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        Log.d("rwj", content.toString());

我在
Asynctask
中尝试了很多代码,效果很好,我想网络操作不能在主UI线程中完成

class RetrieveFeedTask扩展了AsyncTask
{
私人例外;
StringBuilder内容=新建StringBuilder();
受保护的字符串doInBackground(字符串…URL){
尝试
{
//创建url对象
URL=新URL(“http://samples.openweathermap.org/data/2.5/weather?q=London,英国&appid=b1b15e88fa797225412429c1c50c122a1”);
//创建urlconnection对象
URLConnection URLConnection=url.openConnection();
//将urlconnection包装在bufferedreader中
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(urlConnection.getInputStream());
弦线;
//通过bufferedreader从urlconnection读取
而((line=bufferedReader.readLine())!=null)
{
content.append(第+行“\n”);
}
bufferedReader.close();
}
捕获(例外e)
{
Log.d(“myerr”,例如toString());
}
返回content.toString();
}
受保护的void onPostExecute(字符串结果){
Log.d(“myresut”,result.toString());
}
}

您是否在清单中添加了internet权限?可能与Post错误日志重复,如上所述检查清单。Rameez Jawaid,在onCreate方法中执行此类工作的想法是错误的。我会使用asynctask(或类似的东西)。问题是,网络操作无法在主ui线程中完成,因为我已经在Google上搜索过了。是的,它以异步任务的方式工作得很好。
class RetrieveFeedTask extends AsyncTask<String, Void, String>
{

    private Exception exception;
    StringBuilder content = new StringBuilder();

    protected String doInBackground(String... urls) {
        try
        {
            // create a url object
            URL url = new URL("http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1");

            // create a urlconnection object
            URLConnection urlConnection = url.openConnection();

            // wrap the urlconnection in a bufferedreader
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

            String line;

            // read from the urlconnection via the bufferedreader
            while ((line = bufferedReader.readLine()) != null)
            {
                content.append(line + "\n");
            }
            bufferedReader.close();
        }
        catch(Exception e)
        {
            Log.d("myerr", e.toString());
        }

        return content.toString();
    }

    protected void onPostExecute(String result) {
        Log.d("myresut", result.toString());
    }
}