zoukankan      html  css  js  c++  java
  • 用HTTP操作和文件操作把网页下载到sd卡

    这里先把代码贴到这里做一个存档,写到SD卡的是一个txt文件,改成HTML格式之后会出现百度主页,但是中文是乱码,这一点先暂时不去研究了。

    代码:

    
    
    package com.larry.gotcha;
    
    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import..
    
    
    public class MainActivity extends Activity {
    
        private Button requestButton = null ; 
        private HttpResponse httpResponse = null ; 
        private HttpEntity httpEntity = null ; 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            requestButton =(Button)findViewById(R.id.requestButton);
            requestButton.setOnClickListener(new OnClickListener()
            {
                @Override
                public void onClick(View v) {
                    //生成一个请求对象
                    HttpGet httpGet = new HttpGet("http://www.baidu.com/");
                    //生成客户端对象
                    HttpClient httpClient = new DefaultHttpClient();
                    //使用客户端发送请求对象
                    InputStream inputStream = null ; 
    
                    try {
                            //execute返回一个HttpResponse类型的参数,代表服务器返回的响应
                            httpResponse = httpClient.execute(httpGet);
                            //HttpResponse代表返回的响应,那么HttpEntity就代表响应的内容Obtains the message entity of this response, if any. 
                            httpEntity = httpResponse.getEntity();
                            inputStream = httpEntity.getContent();//注意getContent()方法很常用
                            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
                            
                            String sd = Environment.getExternalStorageDirectory().getPath();
                            @SuppressWarnings("resource")
                            FileWriter fw = new FileWriter( sd + "/gotcha.txt");
                            
                            String line = "" ;
                            String result = "" ; 
                            while((line = br.readLine()) != null)
                            {
                                result = line + result ;                         
                            }
                            System.out.println(result);
                            fw.write(result , 0 , result.length());
                        
                        } 
                    catch (ClientProtocolException e) 
                        {
                            e.printStackTrace();
                        } 
                    catch (IOException e) 
                        {
                            e.printStackTrace();
                        }
                    finally
                        {
                            try
                            {
                                inputStream.close();
                            }
                            catch(Exception e)
                            {
                                e.printStackTrace();
                            }
                        }
                }            
            });    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }

    HTTP操作顺序是:HttpGet--HttpClient--HttpResponse--HttpEntity。

    这里I/O流里用的是InputStream、BufferedReader和FileWriter。

    注意要在Mainifest里添加两个权限(这次忘了添加写入SD卡的权限,下午在英语课上想到了。。)

      <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3402795.html
Copyright © 2011-2022 走看看