網絡請求圖片

useragent的使用

可以欺騙服務器,用手機可以獲取電腦的類型。
conn.setRequestProperty("User-Agent","....");

網絡請求圖片

public class MainActivity extends Activity {
    protected static final int SUCCESS = 1;
    protected static final int ERROR = 2;
    private EditText et_path;
    private ImageView iv;
    private Button bt_00;
    //1.得到消息處理器
    private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
            case SUCCESS:
                Bitmap bitmap = (Bitmap) msg.obj;
                iv.setImageBitmap(bitmap);
                break;
            case ERROR:
                Toast.makeText(MainActivity.this, "獲取圖片失敗", 0).show();
                break;
            }
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_path = (EditText) findViewById(R.id.et_path);
        iv = (ImageView) findViewById(R.id.iv);
        bt_00 = (Button) findViewById(R.id.bt_00);
        
        
        bt_00.setOnClickListener(viewImage);
    }

    /**
     * 點擊查看圖片
     * 
     * @param view
     */
    OnClickListener viewImage = new OnClickListener() {

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

            final String path = et_path.getText().toString().trim();
            if (TextUtils.isEmpty(path)) {
                Toast.makeText(MainActivity.this, "對不起,圖片路徑不能為空", 0).show();
                return;
            }
            new Thread(){
                public void run() {
                    //開啟新的子線程 去請求網絡 獲取數據
                    // 顯示這個互聯網上的圖片
                    try {
                        // 1.得到圖片的url路徑
                        URL url = new URL(path);
                        // 2.通過路徑打開一個http的連接
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();// http
                        conn.setRequestMethod("GET");//設置請求參數為get, 默認的請求方式就是get
                        conn.setConnectTimeout(5000);//設置請求服務器的超時時間.
                        // 3.得到服務器的返回信息
                        String type = conn.getContentType();
                        int length = conn.getContentLength();
                        System.out.println("服務器資源的長度:"+length);
                        System.out.println("服務器返回的數據類型:" + type);
                        int code = conn.getResponseCode(); // 200 OK 404 資源沒找到 503服務器內部錯誤
                        if (code == 200) {
                            InputStream is = conn.getInputStream();
                            Bitmap bitmap = BitmapFactory.decodeStream(is);
                            //iv.setImageBitmap(bitmap);
                            //不能直接更新ui,通過發消息讓handler去更新ui
                            Message msg = Message.obtain();//節約了內存
                            msg.what = SUCCESS;
                            msg.obj = bitmap;
                            handler.sendMessage(msg);
                            is.close();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Message msg = Message.obtain();
                        msg.what = ERROR;
                        handler.sendMessage(msg);
                    }
                };
            }.start();
        }   
    };
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容