Android Open Source - AndroidHttpClient3 Main Activity






From Project

Back to project page AndroidHttpClient3.

License

The source code is released under:

MIT License

If you think the Android project AndroidHttpClient3 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.example.androidhttpclient;
/*from  w w w . j  a v a  2 s.c  om*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.xmlpull.v1.XmlSerializer;

import com.entity.Course;
import com.xmlReader.DomXMLReader;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

  String userid = "";
  String userpassword = "";
  TextView mTextView;
  TextView currentUserTextView;
  Button listButton;
  Button updateButton;
  Button logoutButton;

  private Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
      String result = (String) msg.obj;
      mTextView.setText(result);
      if (result.equals("success!")) {
        if (saveUser()) {
          currentUserTextView.setText("currentUser:" + userid);
        } else {
          mTextView.setText("ERROR:User did not be saved!");
        }
      }
    }
  };

  private BroadcastReceiver broadcastReceiverRef = new BroadcastReceiver() {
    @Override
    public void onReceive(Context arg0, Intent arg1) {
      // TODO Auto-generated method stub
      if (arg1.getAction().equals("login")) {
        userid = arg1.getStringExtra("userid");
        userpassword = arg1.getStringExtra("userpassword");
        mTextView.setText("DOWNLOADING......");
        new Thread(new SubThread()).start();
      }
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    mTextView = (TextView) findViewById(R.id.TextView_HTTP);
    currentUserTextView = (TextView) findViewById(R.id.currentUserTextView);
    listButton = (Button) findViewById(R.id.listButton);
    updateButton = (Button) findViewById(R.id.updateButton);
    logoutButton = (Button) findViewById(R.id.logoutButton);

    IntentFilter idRef = new IntentFilter();
    idRef.addAction("login");
    this.registerReceiver(broadcastReceiverRef, idRef);

    logoutButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        deleteAllFiles();
      }
    });

    updateButton.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        mTextView.setText("DOWNLOADING......");
        if (!userid.equals("")) {
          new Thread(new SubThread()).start();
        }
      }
    });

    listButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent gotoCourseList = new Intent();
        gotoCourseList.setClass(MainActivity.this,
            CourseListActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("userid", userid);
        gotoCourseList.putExtras(bundle);
        MainActivity.this.startActivity(gotoCourseList);
      }
    });

    loadUser();
    if (userid.equals("")) {
      LoginDialog loginDialog = new LoginDialog(this);
      loginDialog.show();
    }
    currentUserTextView.setText("currentUser:" + userid);
  }

  @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;
  }

  public class SubThread implements Runnable {
    @Override
    public void run() {
      // TODO Auto-generated method stub
      String strResult = "";
      String httpUrl = "http://jwc.wyu.edu.cn/student/logon.asp";
      HttpPost httpRequest = new HttpPost(httpUrl);
      httpRequest.setHeader("Referer", "http://jwc.wyu.edu.cn/student/body.htm");
      List<NameValuePair> params = new ArrayList<NameValuePair>();
      params.add(new BasicNameValuePair("UserCode", userid));
      params.add(new BasicNameValuePair("UserPwd", userpassword));

      try {
        HttpEntity httpentity = new UrlEncodedFormEntity(params, "GBK");
        httpRequest.setEntity(httpentity);
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse httpResponse = httpclient.execute(httpRequest);
        
        Log.d(EntityUtils.toString(httpResponse.getEntity(), "GBK"),
            "fuckschool");
        
        String httpTableUrl = "http://jwc.wyu.edu.cn/student/f3.asp";
        HttpGet httpGetRequest = new HttpGet(httpTableUrl);
        httpGetRequest.addHeader("Referer", "http://jwc.wyu.edu.cn/student/");
        //httpGetRequest.setHeader("Referer", "http://jwc.wyu.edu.cn/student/menu.asp");
        httpResponse = httpclient.execute(httpGetRequest);
        if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
          strResult = EntityUtils.toString(httpResponse.getEntity(),
              "GBK");
        } else {
          strResult = "????";
        }
      } catch (ClientProtocolException e) {
        // TODO: handle exception
        strResult = e.getMessage().toString();
      } catch (IOException e) {
        strResult = e.getMessage().toString();
      } catch (Exception e) {
        strResult = e.getMessage().toString();
      }
      
      Document doc = Jsoup.parse(strResult);
      Element element = doc.select("table[borderColorLight=#0082cf]")
            .first();
      
      Element elementbody = null;
      try {
        elementbody = element.getElementsByTag("TBODY").first();
      } catch (Exception e) {
        // TODO: handle exception
        String linkText = "Wrong Information";
        Message message = Message.obtain();
        message.obj = linkText;
        mHandler.sendMessage(message);
        return ;
      }
      
      Elements netCourses = elementbody.getElementsByTag("TR");
      netCourses.remove(netCourses.size() - 1);
      netCourses.remove(0); // ??????????????
      List<Course> courses = new ArrayList<Course>();
      int i = 1;
      for (Element netcourse : netCourses) {
        Course course = new Course();
        Elements numCourses = netcourse.getElementsByTag("td");
        String strMonday = numCourses.get(1).text();
        String strTuesday = numCourses.get(2).text();
        String strWednesday = numCourses.get(3).text();
        String strThursday = numCourses.get(4).text();
        String strFriday = numCourses.get(5).text();
        String strSaturday = numCourses.get(6).text();
        String strSunday = numCourses.get(7).text();
        course.setId(i + "");

        course.setMonday(strMonday);
        course.setTuesday(strTuesday);
        course.setWednesday(strWednesday);
        course.setThursday(strThursday);
        course.setFriday(strFriday);
        course.setSaturday(strSaturday);
        course.setSunday(strSunday);

        i++;

        course = handlCourse(course); // ???????
        courses.add(course);
      }
      boolean isWorked = false;
      try {
        FileOutputStream outStream = MainActivity.this.openFileOutput(
            userid + ".xml", Context.MODE_WORLD_WRITEABLE);
        isWorked = DomXMLReader.saveAsXml(courses, outStream);
      } catch (Exception e) {
        // TODO: handle exception
      }

      String linkText = "failed!";
      if (isWorked)
        linkText = "success!";
      Message message = Message.obtain();
      message.obj = linkText;
      mHandler.sendMessage(message);
    }
  }

  public Course handlCourse(Course netcourse) {
    String strMonday = netcourse.getMonday();
    String strTuesday = netcourse.getTuesday();
    String strWednesday = netcourse.getWednesday();
    String strThursday = netcourse.getThursday();
    String strFriday = netcourse.getFriday();
    String strSaturday = netcourse.getSaturday();
    String strSunday = netcourse.getSunday();

    strMonday = strMonday.replace("&nbsp;", "\n\r");
    strMonday = strMonday.replace("<br>", "\n\r");

    strTuesday = strTuesday.replace("&nbsp;", "\n\r");
    strTuesday = strTuesday.replace("&nbsp;", "\n\r");

    strWednesday = strWednesday.replace("&nbsp;", "\n\r");
    strWednesday = strWednesday.replace("&nbsp;", "\n\r");

    strThursday = strThursday.replace("&nbsp;", "\n\r");
    strThursday = strThursday.replace("&nbsp;", "\n\r");

    strFriday = strFriday.replace("&nbsp;", "\n\r");
    strFriday = strFriday.replace("&nbsp;", "\n\r");

    strSaturday = strSaturday.replace("&nbsp;", "\n\r");
    strSaturday = strSaturday.replace("&nbsp;", "\n\r");

    strSunday = strSunday.replace("&nbsp;", "\n\r");
    strSunday = strSunday.replace("&nbsp;", "\n\r");

    Course course = new Course();
    course.setMonday(strMonday);
    course.setTuesday(strTuesday);
    course.setWednesday(strWednesday);
    course.setThursday(strThursday);
    course.setFriday(strFriday);
    course.setSaturday(strSaturday);
    course.setSunday(strSunday);

    return course;
  }

  protected boolean saveUser() {
    Properties properties = new Properties();
    properties.put("userid", userid);
    properties.put("userpassword", userpassword);
    try {
      FileOutputStream stream = this.openFileOutput("user.cfg",
          Context.MODE_WORLD_WRITEABLE);
      properties.store(stream, "");
    } catch (FileNotFoundException e) {
      // TODO: handle exception
      return false;
    } catch (IOException e) {
      return false;
    }
    return true;
  }

  protected void loadUser() {
    Properties properties = new Properties();
    try {
      FileInputStream stream = this.openFileInput("user.cfg");
      properties.load(stream);
    } catch (FileNotFoundException e) {
      // TODO: handle exception
      return;
    } catch (IOException e) {
      return;
    }
    userid = properties.get("userid").toString();
    userpassword = properties.get("userpassword").toString();
  }

  protected void deleteAllFiles() {
    File userfile = new File(this.getFilesDir() + File.separator
        + "user.cfg");
    if (userfile.exists()) {
      userfile.delete();
    }
    File coursefile = new File(this.getFilesDir() + File.separator + userid
        + ".xml");
    if (coursefile.exists()) {
      coursefile.delete();
    }
    System.exit(0);
  }
}




Java Source Code List

com.entity.Course.java
com.example.androidhttpclient.CourseListActivity.java
com.example.androidhttpclient.LoginDialog.java
com.example.androidhttpclient.MainActivity.java
com.xmlReader.DomXMLReader.java