0

Web サイトにログインして、Android エミュレーターを使用してソース コードを表示しようとしていますが、動作させることはできませんが、Java ベースでのみ動作しています。

これが私のコードです:

package auth.test;

import android.app.Activity;
import android.os.Bundle;
// used for interacting with user interface
import android.widget.TextView;
import android.widget.EditText;
// used for passing data 
// used for connectivity
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class AuthActivity extends Activity {
/** Called when the activity is first created. */

//Handler h;
private static URL URLObj;
private static URLConnection connect;
EditText eText;
TextView tView;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

   tView=(TextView)findViewById(R.id.textView1);
   initControls();
}

    public void initControls()
    {

        try {

            URLObj = new URL("http://students.usls.edu.ph");
            connect = URLObj.openConnection();
            connect.setDoOutput(true);  
        }
        catch (MalformedURLException ex) {
            tView.setText("The URL specified was unable to be parsed or uses an invalid protocol. Please try again.");
            //System.exit(1); 
        }
        catch (Exception ex) {
            tView.setText("An exception occurred. " + ex.getMessage());
            //System.exit(1);
        }


        try {

            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connect.getOutputStream()));
            writer.write("username=0920204&password=******");
            //writer.close();


            BufferedReader reader = new BufferedReader(new InputStreamReader(connect.getInputStream()));

            String lineRead="";


            while((lineRead=reader.readLine())!=null)
            {
                tView.append(lineRead + "\n");
            }


            reader.close();

        }
        catch (Exception ex) {
            tView.setText("There was an error reading or writing to the URL: " + ex.getMessage());
        }
    }
}

そのため、メイン ページのソース コードを表示する代わりに、ログイン ページのソース コードを表示しています。したがって、コードの Bufferedwriter 部分に何か問題があると思います。

4

2 に答える 2

1

まず、ユーザー名/パスワードを隠すか偽造する必要があります。

URLConnectionCookie の扱いが非常に悪い。そのため、ログイン ページから結果を取得しました。Android にはAPI 1 からApache HttpClientが組み込まれているので、それを使用できます。Cookie は非常に適切に管理されています :-)

そして、ソースコードではなく、サーバーから応答された生のテキストを取得しています。

于 2012-07-07T13:55:39.877 に答える
0

フォームの名前は、ページのソースによると、login.cfmそこに投稿する必要があります。これを例として使用できます: http://www.devx.com/tips/Tip/18188

于 2012-07-07T13:58:36.083 に答える