在安卓中使用java.net的问题

2019-03-26 12:35发布

我在学安卓,看一本书,照着例子做。
有一个网络的例子,做不出来。
这个例子是这样的:
(1)、AndroidManifest.xml添加了权限:
<uses-permission android:name="android.permission.INTERNET"/>
(2)、布局文件里有一个文本框,两个编辑框,一个按钮。
实现功能是按下按钮,第二个编辑框显示第一个编辑框里的网址所对应的内容。
<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter URL" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:text="http://innovator.samsungmobile.com">

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click here" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

(3)、主文件如下:
TextView textView1;
        TextView textView2;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                bt=(Button)findViewById(R.id.button1);
                textView1=(TextView)findViewById(R.id.editText1);
                textView2=(TextView)findViewById(R.id.editText2);
                StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()          //此处防止抛出异常
                                .detectDiskWrites()
                                .detectDiskReads()
                                .detectNetwork()
                                .penaltyLog()
                                .build());
                StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                                .detectLeakedSqlLiteObjects()
                                .detectLeakedClosableObjects()
                                .penaltyLog()
                                .penaltyDeath()
                                .build());
               
                bt.setOnClickListener(new Button.OnClickListener(){
                        public void onClick(View v){
                                textView2.setText("");
                                try{
                                        /*Java Networking API*/
                                        URL url=new URL(textView1.getText().toString());
                                        URLConnection conn=url.openConnection();
                                        /*Read the Response*/
                                        BufferedReader rd=new BufferedReader(new
                                                        InputStreamReader(conn.getInputStream()));
                                       
                                        String line="";
                                        while((line=rd.readLine())!=null){
                                                textView2.append(line);
                                        }
                                }catch (Exception exe){
                                        exe.printStackTrace();
                                }
                        }
                });

此帖出自Linux与安卓论坛
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
chenbingjy
1楼-- · 2019-03-26 14:21
调试了一下:
执行到InputStreamReader(conn.getInputStream()));这一句,就跳到
catch (Exception exe){这儿来了。
littleshrimp
2楼-- · 2019-03-26 17:20
看一下Exception里边是什么错误信息
chenbingjy
3楼-- · 2019-03-26 17:28
谢谢!原因知道了,网址有问题。我换成"http://www.baidu.com"就可以了。

一周热门 更多>