HttpClient+DL

package com.baidu.httpurlconnection;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import com.bwie.helper.MyHelper;
import com.bwie.vo.News;
import com.bwie.vo.SuperNews;
import com.google.gson.Gson;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    public static final String LOGIN_URL = "http://101.200.142.201:8080/tqyb/login";
    private static final String LOGIN_NEWS_URL = "http://101.200.142.201:8080/tqyb/newsList.json";
    private EditText ed_name;
    private EditText ed_pwd;
    // 创建handler
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == 1) {
                // 创建线程
                new Thread() {
                    public void run() {
                        // 从服务器得到json串
                        String str = getJsonFromServer();
                        perseJson(str);
                        System.out.println(str);
                    }

}.start();
                startActivity(new Intent(MainActivity.this, NewActivity.class));
            }
        };
    };

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();

}

private void init() {
        ed_name = (EditText) findViewById(R.id.name);
        ed_pwd = (EditText) findViewById(R.id.pwd);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

private String ename;
            private String epwd;

public void onClick(View v) {
                ename = ed_name.getText().toString();
                epwd = ed_pwd.getText().toString();
                // 开启线程
                new Thread() {
                    public void run() {
                        String data = getDataByServerByGet(ename, epwd);
                        if (data.equals("success")) {
                            handler.sendMessage(handler.obtainMessage(1, data));
                        }
                    }

}.start();
            }
        });
    }

private void perseJson(String str) {
        // TODO Auto-generated method stub
        Gson g = new Gson();
        SuperNews superNews = g.fromJson(str, SuperNews.class);
        // 创建实体类集合
        // List<News> list = new ArrayList<News>();
        List<News> list = superNews.getList().getArticles();
        // 添加到数据库,以便查询
        MyHelper helper = new MyHelper(MainActivity.this, "qqqqqqqqqq", null, 1);
        SQLiteDatabase database = helper.getWritableDatabase();
        // 添加得使用循环
//        db.execSQL("create table news (id integer,title varchar(200),litpic varchar(100),typeid varchar(10),description varchar(800),url description(100))");

for (News n : list) {
            database.execSQL("insert into news values(null,?,?,?,?,?)",
                    new String[] { n.getTitle(), n.getLitpic(), n.getTypeid(),
                            n.getDescription(), n.getUrl() });
        }

}

private String getJsonFromServer() {
        // TODO Auto-generated method stub
        String str = "";
        // 创建路径
        try {
            URL url = new URL(LOGIN_NEWS_URL);
            // 打开
            HttpURLConnection openConnection = (HttpURLConnection) url
                    .openConnection();
            // 设置时间
            openConnection.setConnectTimeout(5000);
            openConnection.setReadTimeout(5000);
            // 得到IO流
            InputStream is = openConnection.getInputStream();
            int length = is.available();
            byte[] buffer = new byte[length];
            is.read(buffer);
            str = new String(buffer, 0, length);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return str;
    };

private String getDataByServerByGet(String ename, String epwd) {
        // TODO Auto-generated method stub
        String rs = "";
        // 创建StringBuffer
        StringBuffer sb = new StringBuffer(LOGIN_URL);
        // 追加用户名和密码
        sb.append("?username=" + ename);
        sb.append("&userpass=" + epwd);
        try {
            // 创建url路径
            URL url = new URL(sb.toString());
            // 打开
            HttpURLConnection openConnection = (HttpURLConnection) url
                    .openConnection();
            // 设置时间
            openConnection.setConnectTimeout(5000);
            openConnection.setReadTimeout(5000);
            // 判断是否成功
            if (openConnection.getResponseCode() == 200) {
                // 创建IO流对象
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        openConnection.getInputStream(), "utf-8"));
                rs = br.readLine();
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs;
    };

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

时间: 2024-11-10 16:03:16

HttpClient+DL的相关文章

爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><meta http-equiv="Content-Type" content="text/html; c

Httpclient 和jsoup结和提取网页内容(某客学院视频链接)

最近在极客学院获得体验会员3个月,然后就去上面看了看,感觉课程讲的还不错.整好最近学习Android,然后去上面找点视频看看.发现只有使用RMB买的会员才能在上面下载视频.抱着试一试的态度,去看他的网页源码,不巧发现有视频地址链接.然后想起来jsoup提取网页元素挺方便的,没事干就写了一个demo. jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. jso

用gson和httpclient调用微信公众平台API

吐槽:微信api很无语,部分用xml,部分用json. 最近在找如何调用微信公众平台关于json相关的api比较方便,最后发现httpcliect和gson不错.如果你有更好的方式,请告诉我. 以下代码先了解如何使用gson和httpclient,有功夫再整到我的sophia里 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.

HttpClient使用详解 (一)

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是Apache Jakarta Common下的子项目,用

SpringMVC template和HttpClient post提交

服务器的接口如果是springmvc客户端除了用springmvc提供的RestTemplate请求如下 public class RestClient { private static Logger logger = Logger.getLogger(RestClient.class); @SuppressWarnings({ rawtypes, unchecked }) public static Object post(String url, Map<string, object="

Httpclient处理摘要认证

虽然摘要认证的安全性比BASIC认证提高了不少,但是从接口调用上来看,并不比BASIC认证复杂,而且Realm和Scheme参数都可以为空,这时候就和BASIC认证的调用方式一模一样了. import java.net.URI; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.Credentia

【黑马Android】(06)使用HttpClient方式请求网络/网易新闻案例

使用HttpClient方式请求网络 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

使用Apache HttpClient访问网络(实现手机端注册,服务器返回信息)

这两天看了点网络编程,根据教程写了一个小的注册服务,贴出来. 本实例分别演示用GET方式和POST方式想服务器发送注册信息,分为客户端和服务器端两部分: 客户端注册用户信息,发送到服务器 服务器端接收信息并向客户端返回注册信息.(服务器端使用J2EE中的Servlet技术来实现,并发布到Tomcat服务器上) 代码运行效果如下: 客户端: 1.点击get注册按钮后: 客户端: 服务器端: 2.点击post注册按钮后: 客户端: 服务器端: 3.当服务器端关闭时: 客户端注册信息时会提示链接超时:

HttpClient(四)-- 使用代理IP 和 超时设置

1.代理IP的用处: 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施.这时候,就可以使用代理IP,屏蔽一个就换一个IP. 2.代理IP分类: 代理IP的话 也分几种: 透明代理.匿名代理.混淆代理.高匿代理,一般使用高匿代理. 3.使用 RequestConfig.custom().setProxy(proxy).build() 来设置代理IP: public static void main(String[] args) throws