从Android应用程序登录使用HTTP基本身份验证的网站

Fyn*_*ynn 0 java authentication android login http

我已经搜索了许多方法来做到这一点,但我找不到任何有效的方法.

我想登录这个网站:http: //www.besselgymnasium.de/fileadmin/Vertretung/Vertretungsplan_Schueler/subst_001.htm使用我的Android应用程序使用HTTP基本身份验证来读出源代码,但我不知道如何我可以让我的应用程序自动登录.

有人能告诉我这是如何实现的吗?

我尝试的最后一件事是:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    quellcode = (TextView) findViewById(com.example.MainActivity.R.id.TextView01);
    geschichte = (TextView) findViewById(com.example.MainActivity.R.id.geschichte);
    datum1 = (TextView) findViewById(com.example.MainActivity.R.id.datum1);
    datum1.setText("25.03.2014");
    readWebpage(quellcode);

}


@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;
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {
        String credentials = "username" + ":" + "password";
        Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);





        String response = "";
        for (String url : urls) {
            DefaultHttpClient client = new DefaultHttpClient();

            HttpGet httpGet = new HttpGet(url);
            httpGet.setHeader("Authorization", "Basic "+credentials);
            try {
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
                String s = "";
                while ((s = buffer.readLine()) != null) {
                    response += s;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return response;

    }
    //END OF READING

    @Override
    protected void onPostExecute(String result) {
        quellcode.setText(result);


    }
}


public void readWebpage(View view) {
    DownloadWebPageTask task = new DownloadWebPageTask();
    task.execute(new String[]{"http://username:password@www.besselgymnasium.de/fileadmin/Vertretung/Vertretungsplan_Schueler/subst_001.htm"});

}
Run Code Online (Sandbox Code Playgroud)

}

fva*_*c23 6

要访问该网站,您必须添加Authorization标头.

首先,您必须使用base64连接和编码您的凭据:

string credentials = username + ":" + password;
string credBase64 = Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT).replace("\n", "");
Run Code Online (Sandbox Code Playgroud)

然后你将这个标题添加到你的httpClient:

httpGet.setHeader("Authorization", "Basic "+credBase64);
Run Code Online (Sandbox Code Playgroud)

随意询问您是否需要更多帮助.