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)
}
要访问该网站,您必须添加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)
随意询问您是否需要更多帮助.