网页登录错误 - Android App

时间:2014-06-30 10:38:24

标签: java android eclipse webpage login-script

我是Android和Java的新手。我正在创建一个登录我的ISP的应用程序。这是页面:http://reliancebroadband.co.in/reliance/login.do

早些时候,我使用的是一个python脚本,它运行得很完美。它是这样的:

#!/usr/bin/env python
# encoding: utf-8

import urllib2, urllib, cookielib

username = 'my-username'
password = 'my-password'

jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))

response = opener.open("http://reliancebroadband.co.in/reliance/startportal_isg.do")

login_data = urllib.urlencode({'userId' : username, 'password' : password, 'action' : 'doLoginSubmit'})
resp = opener.open('http://reliancebroadband.co.in/reliance/login.do', login_data)

现在我正在尝试创建一个Android应用程序(来源:http://www.compiletimeerror.com/2013/01/login-application-for-android.html#.U7AFBPmSz9Y)(尝试联系开发者那里,但他没有回应。) 该应用程序正在正确编译,但在登录时,它只是在错误对话框中返回登录页面的源代码,而不是登录。 这是代码:

MainActivity.java:

package com.app.reliancebblogin;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

@SuppressLint("NewApi")
public class MainActivity extends Activity 
{
 EditText un, pw;
 TextView error;
 Button ok;
 private String resp;
 private String errorMsg;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) 
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  un = (EditText) findViewById(R.id.et_un);
  pw = (EditText) findViewById(R.id.et_pw);
  ok = (Button) findViewById(R.id.btn_login);
  error = (TextView) findViewById(R.id.tv_error);

  ok.setOnClickListener(new View.OnClickListener() 
  {
   @Override
   public void onClick(View v) 
   {
    /** According with the new StrictGuard policy,  running long tasks on the Main UI thread is not possible
    So creating new thread to create and execute http operations */
    new Thread(new Runnable() 
    {
        @Override
     public void run() 
        {
      ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
      postParameters.add(new BasicNameValuePair("username",un.getText().toString()));
      postParameters.add(new BasicNameValuePair("password",pw.getText().toString()));

      String response = null;
      try 
      {
          response = SimpleHttpClient.executeHttpPost("http://reliancebroadband.co.in/reliance/login.do", postParameters);
       String res = response.toString();
       resp = res.replaceAll("\\s+", "");

      } 
      catch (Exception e) 
      {
       e.printStackTrace();
       errorMsg = e.getMessage();
      }
     }

    }).start();
    try 
    {
    /** wait a second to get response from server */
    Thread.sleep(1000);
    /** Inside the new thread we cannot update the main thread
    So updating the main thread outside the new thread */

     error.setText(resp);

     if (null != errorMsg && !errorMsg.isEmpty()) 
     {
      error.setText(errorMsg);
     }
    } 
    catch (Exception e) 
    {
     error.setText(e.getMessage());
    }
   }
  });
 }
}

SimpleHttpClient.java:

package com.app.reliancebblogin;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

public class SimpleHttpClient 
{
 /** The time it takes for our client to timeout */
    public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds

    /** Single instance of our HttpClient */
    private static HttpClient mHttpClient;

    /**
     * Get our single instance of our HttpClient object.
     *
     * @return an HttpClient object with connection parameters set
     */
    private static HttpClient getHttpClient() 
    {
        if (mHttpClient == null) 
        {
            mHttpClient = new DefaultHttpClient();
            final HttpParams params = mHttpClient.getParams();
            HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
            HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
            ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
        }
        return mHttpClient;
    }

    /**
     * Performs an HTTP Post request to the specified url with the
     * specified parameters.
     *
     * @param url The web address to post the request to
     * @param postParameters The parameters to send via the request
     * @return The result of the request
     * @throws Exception
     */
    public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception 
    {
        BufferedReader in = null;
        try 
        {
            HttpClient client = getHttpClient();
            HttpPost request = new HttpPost(url);
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
            request.setEntity(formEntity);
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) 
            {
                sb.append(line + NL);
            }
            in.close();

            String result = sb.toString();
            return result;
        }
        finally 
        {
            if (in != null) 
            {
                try 
                {
                    in.close();
                } catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * Performs an HTTP GET request to the specified url.
     *
     * @param url The web address to post the request to
     * @return The result of the request
     * @throws Exception
     */
    public static String executeHttpGet(String url) throws Exception 
    {
        BufferedReader in = null;
        try 
        {
            HttpClient client = getHttpClient();
            HttpGet request = new HttpGet();
            request.setURI(new URI(url));
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) 
            {
                sb.append(line + NL);
            }
            in.close();

            String result = sb.toString();
            return result;
        }
        finally 
        {
            if (in != null) 
            {
                try 
                {
                    in.close();
                } catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }
    }
}

0 个答案:

没有答案