Ich habe ein Problem mit einer http-Authentifizierung. Kein Problem mit anderen Web-Service ohne Authentifizierung zu verbinden. Aber ich weiß nicht, wie ich mit dieser HTTP-Authentifizierung mit Android verbinden kann. Also in meiner App habe ich zwei Textfeld (Login und Passwort). Und eine Schaltfläche, um eine Verbindung zu einer Adresse herzustellen und Informationen über den Benutzer zu erhalten (JSON-Daten). In einem ersten Mal möchte ich Kennungen in Adresse übergeben: https://proxyepn-test.epnbn.net/wsapi/user. Wie https://login:[email protected]/wsapi/user. Und Daten im Protokoll anzeigen. Können Sie mir helfen?HTTP-Authentifizierung mit Android
` Ich versuche das.
public HashMap<String, String> btn_connexion(View view) {
etPseudo = (EditText) findViewById(R.id.editText);
etMdp = (EditText) findViewById(R.id.editText2);
final String pseudo = etPseudo.getText().toString();
final String mdp = etMdp.getText().toString();
//String urldisplay = "https://" + pseudo + ":" + mdp + "@proxyepn-test.epnbn.net/wsapi/user";
@Override
public Map<String, String> getHeaders() throws AuthFailureErro {
HashMap<String, String> params = new HashMap<>();
String creds = String.format("%s:%s", pseudo, mdp);
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP);
params.put("Authorization", auth);
return params;
}
}`
// Klasse, um die Verbindung
public static class RestOperation extends AsyncTask<String, Void, String> {
String content;
String error;
String data = "";
@Override
protected String doInBackground(String... params) {
BufferedReader br = null;
URL url;
try {
url = new URL(params[0]);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter outputStreamWr = new OutputStreamWriter(connection.getOutputStream());
outputStreamWr.write(data);
outputStreamWr.flush();
br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while((line = br.readLine())!=null) {
sb.append(line);
sb.append(System.getProperty("line.separator"));
}
content = sb.toString();
Log.i("content",content);
} catch (MalformedURLException e) {
error = e.getMessage();
e.printStackTrace();
} catch (IOException e) {
error = e.getMessage();
e.printStackTrace();
} finally {
try {
if(br != null) {
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return content;
}
}
// ein Beispiel der Verbindung mit einem Web-Service ohne Authentifizierung
String restURL = "https://proxyepn-test.epnbn.net/wsapi/epn";
RestOperation test = new RestOperation();
String[]tabInfos = null;
try {
String test2 = test.execute(restURL).get().toString();
Log.i("result",test2);
JSONObject obj = new JSONObject(test2);
JSONObject data = obj.getJSONObject("data");
Iterator<String> iterator = data.keys();
while(iterator.hasNext()){
String key = iterator.next();
String name = data.getString(key);
tabInfos = name.split(",");
...
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
thx, aber ich weiß nicht weiß, wie man das benutzt. Ich bearbeite meine Frage, um genauer zu sein. –
@GregConstantin ich habe die Antwort bearbeitet fügen Sie diese Zeilen in Ihrer RestOperation-Klasse doInBackground-Methode – d1vivek681065
Ich habe einen Fehler mit setRequestProperty. –