Also: Ich muss einen Client für Jira machen, da Jira ein login erfordert, muss ich mich also authentifizieren.
Laut der Atlassian-Docu, werden alle Werte von Jira im JSON-Format zurückgegeben, allerdings gibt mir dieser Code schlicht und einfach die HTML-Struktur der besagten Webseite zurück. Die Webseite findet er also eigentlich, allerdings macht es keinen Unterschied, ob ich meine Userdaten eingebe oder nicht, daher vermute ich, dass er nicht mal versucht, mich anzumelden. Eigentlich soll er mir eine JSession-ID mitgeben, damit ich dieses login für alle meine Requests nutzen kann (soweit ich das verstanden habe)
Da dieser Code penetrant das Falsche macht, habe ich noch einen anderen Code direkt aus der Atlassian-Doku zusammengeschraubt, allerdings kann ich da nicht einmal wirklich beurteilen, ob die Authentifizierung funktioniert, weil der Code einfach nur BufferedStrings zurückschickt..
Nicht über den encoder wundern, da überall Fehlermeldungen auftauchen, wenn ich versuche, ihn einzubinden, habe ich ihn durch das "print" dann manuell aus der Konsole an die richtige(?) Stelle kopiert. Nicht ideal, aber ich hab gedacht, zum Testen reicht es, darum kümmere ich mich dann, wenn erstmal was funktioniert.
Kann einer von euch erkennen, warum meine Konsole mir im ersten Fall die HTML-Struktur der Seite und im zweiten Fall Java.io.BufferedInputstream+StreamID zurückgibt? woher bekomme ich den Content von dem Stream?
Laut der Atlassian-Docu, werden alle Werte von Jira im JSON-Format zurückgegeben, allerdings gibt mir dieser Code schlicht und einfach die HTML-Struktur der besagten Webseite zurück. Die Webseite findet er also eigentlich, allerdings macht es keinen Unterschied, ob ich meine Userdaten eingebe oder nicht, daher vermute ich, dass er nicht mal versucht, mich anzumelden. Eigentlich soll er mir eine JSession-ID mitgeben, damit ich dieses login für alle meine Requests nutzen kann (soweit ich das verstanden habe)
Code:
public static void main(String[] args)
{
String loginResponse = "";
String JsessionID = "";
String JsonData = "";
String csvData = "";
String writeToFileOutput = "";
String baseURL = "hier steht normal die URL";
String loginURL = "Erweiterung der URL auf die login-Seite";
String loginUsername = "admin";
String loginPasswort = "admin";
loginResponse = logIntoJIRA(baseURL, loginURL, loginUsername, loginPasswort);
//JsessionID = parseJsessionID();
JsonData = getJsonData();
csvData = formatAsCsv();
writeToFileOutput = writeToFile();
}
public static String logIntoJIRA(String baseURL, String loginURL, String loginUsername, String loginPasswort)
{
String loginResponse = "";
URL url= null;
HttpURLConnection conn = null;
String input ="";
OutputStream os = null;
BufferedReader reader = null;
String output = null;
try{
url = new URL (baseURL + loginURL);
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
input = "{\"username\":\"" + loginUsername + "\", \"password\":\"" + loginPasswort + "\"}";
os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
if(conn.getResponseCode() == 200){ //wird erreicht, webseite wird anscheinend aufgerufen
reader = new BufferedReader(new InputStreamReader((conn.getInputStream())));
while((output = reader.readLine()) != null) //Schleife wird 624 durchlaufen, nicht gewollt
{
loginResponse += output;
}
conn.disconnect();
}
}
catch (Exception e)
{
System.out.println("Fehler bei loginToJIRA: " + e.getMessage());
loginResponse = "FEHLER";
}
System.out.println("\nloginResponse:");
System.out.println(loginResponse);
return loginResponse;
}
Da dieser Code penetrant das Falsche macht, habe ich noch einen anderen Code direkt aus der Atlassian-Doku zusammengeschraubt, allerdings kann ich da nicht einmal wirklich beurteilen, ob die Authentifizierung funktioniert, weil der Code einfach nur BufferedStrings zurückschickt..
Code:
public static void main(String [] args) throws IOException {
//Erstellung und encoden von Passwort+Username-Kombination
Base64.Encoder encoder = Base64.getEncoder();
String originalString = "username:passwort";
String encodedString = encoder.encodeToString(originalString.getBytes());
//System.out.println(encodedString);
String command = "curl -H \"Authorization: Basic dXNlcm5hbWU6cGFzc3dvcnQ= \" -X POST -H \"Content-Type: application/json\"url-der seite/login- erweiterung/rest/auth/latest";
Process process = Runtime.getRuntime().exec(command);
process.getInputStream();
//System.out.println(process.toString());
command = "curl -H \"Authorization: Basic dXNlcm5hbWU6cGFzc3dvcnQ= \" -X GET -H \"Content-Type: application/json\"/rest/agile/1.0/board";
process = Runtime.getRuntime().exec(command);
process.getInputStream();
//System.out.println(process.getInputStream().toString());
Nicht über den encoder wundern, da überall Fehlermeldungen auftauchen, wenn ich versuche, ihn einzubinden, habe ich ihn durch das "print" dann manuell aus der Konsole an die richtige(?) Stelle kopiert. Nicht ideal, aber ich hab gedacht, zum Testen reicht es, darum kümmere ich mich dann, wenn erstmal was funktioniert.
Kann einer von euch erkennen, warum meine Konsole mir im ersten Fall die HTML-Struktur der Seite und im zweiten Fall Java.io.BufferedInputstream+StreamID zurückgibt? woher bekomme ich den Content von dem Stream?