java - 无法使用http请求获取页面

标签 java android jsoup

这是代码,它必须加载页面并将其存储在string[]中。我不明白这个问题,因为它没有加载页面并且没有抛出任何错误

如果有人知道任何发送 http 请求的更好方法,请发布或者请告诉我问题。

 //some code    
    btnShowLocation.setOnClickListener(new View.OnClickListener() {
                int j=0;
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    new MyTask().execute();});     
    //some code

    private class MyTask extends AsyncTask<Void, Void, Void> {
                    @Override
                    protected Void doInBackground(Void... params) {
                        // TODO Auto-generated method stub

                        try {

                            String ssr="";
                            URL n = new URL("http://maps.google.co.in/maps?hl=en&q=nagpur+to+pune");
                            URLConnection nc = null;
                            nc = n.openConnection();
                            BufferedReader in = null;
                            in = new BufferedReader(new InputStreamReader(nc.getInputStream()));
                            String inputLine;
                            while ((inputLine = in.readLine()) != null) {
                                ssr+=inputLine;
                            }

                            Document doc = Jsoup.parse(ssr);
                            Elements el = doc.getElementsByClass("dir-mrgnr");
                            String str = el.text();
                            str = str.replaceAll("[0-9]+[.] ", "\n");
                            string = str.split("\n");
                        } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                        return null;
                    }

                    @Override
                    protected void onProgressUpdate(Void... values) {
                        // TODO Auto-generated method stub
                        super.onProgressUpdate(values);
                        Toast.makeText(
                                getApplicationContext(),
                                "in Background",
                                Toast.LENGTH_LONG).show();
                        speakOut("not Working");
                        //speakOut("work in progress");
                    }

                    @Override
                    protected void onPostExecute(Void result) {
                        // TODO Auto-generated method stub

                        super.onPostExecute(result);

                    }

                }

最佳答案

您不需要下载页面并解析它。

List<String> list = new ArrayList<>(); // Better than an array

Document doc = Jsoup.connect("http://maps.google.co.in/maps?hl=en&q=nagpur+to+pune").get(); // Connect to url and parse its conntent
Elements el = doc.select("*.dir-mrgnr"); // Every tag with 'dir-mrgnr' class - or use getElementsByClass() as you did

for( Element element : el )
{
    list.add(element.text());
}

顺便说一句。 不要使用+= on a String in a loop ;使用 StringBuilder instdead!

关于java - 无法使用http请求获取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437581/

相关文章:

Java 程序不接受管道输入

android - 如何在应用程序的根文件夹中编辑 google-service.json?

java - 我如何解析单个变量中保存的每个字符串

java - 使用 Jsoup 从 html 代码中提取数据

java - Google Dataflow Beam 作业中的 SSL 握手异常

java - 使进程等待

android - Activity Intent 权限 Android M SDK 23

java - 使用jsoup提取HTML中的图像src

java - 使用按位运算符将 byte 转换为 int

android - 为什么不同设备的 ANativeWindow_Buffer.stride 不同