2012-10-06 70 views
0

我想获取用户输入的网页的源代码。当他按下按钮时,他应该在TextView中看到源代码。这是我的代码:Android获取网页源代码

final Button b = (Button) findViewById(R.id.button1); 

     b.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       try { 
        URL url = null; 
        url = new URL(myEditText.getText().toString()); 
        URLConnection conn = url.openConnection(); 
        BufferedReader reader = new BufferedReader(
          new InputStreamReader(conn.getInputStream())); 
        String line = ""; 
        while ((line = reader.readLine()) != null) { 
         myTextView.append(line); 

        } 

       } catch (Exception e) { 

        Log.e("ERR",e.getMessage()); 
       } 

      } 
     }); 

当我运行它,我在

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

.-->的println需要一个消息得到一个NullPointerException。

我不知道什么是错的,因为这是来自视频教程。我已在清单中写入<uses-permission android:name="android.permission.INTERNET"/>,所以一切都应该是好的。

+0

您可以添加堆栈跟踪? –

+0

我怀疑你的URL是空的。这是否需要在EditText中,并且可以验证其价值? –

回答

0

试试这个。

url = new URL("http://www.stackoverflow.com"); 

,如果它工作,那么你需要的设置验证像isValidUrl()

因为用户可能输入了错误的URL。

+0

它说:协议未找到 – Teo

+0

我如何得到一些网页的HTML源代码?如果我获得完整的源页面,它可能会花费很多时间,我不需要获得所有的线路,你能帮助我吗? thx非常 –

0
if(!TextUtils.isEmpty(myEditText.getText())) 
      url = new URL(myEditText.getText().toString()); 
else 
url=""; 

,或者如果您正在使用最新版本检查StrictMode并删除它

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

还检查Android是网络提供或不