Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:http:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
api:documentation:http:start [2023/04/02 11:35] – [Beispiel 1: Durchschnittseinkommen in den USA nach Branche] Martin Pabstapi:documentation:http:start [2023/04/02 13:10] – [URL-Encoding] Martin Pabst
Zeile 10: Zeile 10:
  
  
-===== Beispiel 1: Durchschnittseinkommen in den USA nach Branche =====+===== Durchschnittseinkommen in den USA nach Branche =====
 Viele Daten über die USA erhält man auf der Seite [[https://datausa.io|https://datausa.io]]. Das öffentliche API [[https://datausa.io/about/api/|ist hier beschrieben.]] Wir holen uns Daten über das jährliche Durchschnittseinkommen in Abhängigkeit von der Branche:  Viele Daten über die USA erhält man auf der Seite [[https://datausa.io|https://datausa.io]]. Das öffentliche API [[https://datausa.io/about/api/|ist hier beschrieben.]] Wir holen uns Daten über das jährliche Durchschnittseinkommen in Abhängigkeit von der Branche: 
  
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'httptest1'}">+<div class="java-online" style="height: 400px; width: 100%;" data-java-online="{'withBottomPanel': false, 'id': 'httptest1'}">
 <script type="text/plain" title="Http-Test.java"> <script type="text/plain" title="Http-Test.java">
 HttpClient client = new HttpClient(); HttpClient client = new HttpClient();
 HttpRequest request = new HttpRequest(); HttpRequest request = new HttpRequest();
-request.uri("https://ostrich-api.datausa.io/api/data?measure=Average%20Wage,Average%20Wage%20Appx%20MOE,Record%20Count&drilldowns=Major Occupation%20Group&Workforce%20Status=true&Record%20Count>=5");+request.uri("https://ostrich-api.datausa.io/api/data?measure=Average%20Wage,Average%20Wage%20Appx%20MOE,Record%20Count&drilldowns=Major%20Occupation%20Group&Workforce%20Status=true&Record%20Count>=5");
  
 HttpResponse response = client.send(request); HttpResponse response = client.send(request);
 println(response.body()); println(response.body());
 +
 +println("\nResponse-Status: " + response.statusCode(), Color.green);
 +// Ausgabe der Response-Header:
 +println("\nHeader:");
 +for (HttpHeader header : response.headers()) {
 +   print(header.key + ": ", Color.lightblue);
 +   println(header.value, Color.lightcoral);
 +}
 </script> </script>
  
Zeile 29: Zeile 37:
 </HTML> </HTML>
  
 +===== URL-Encoding =====
 +<WRAP center round info 80%>
 +Gemäß [[https://www.rfc-editor.org/rfc/rfc3986#page-12|RFC3986]] darf man für die Parameter eines GET-Requests (d.h. alles nach dem '?') nur eine Teil der ASCII-Zeichen verwenden. Alle anderen Zeichen (Leerzeichen, Schrägstrich, Umlaute, ...) müssen in einer Schreibweise mit Prozentzeichen enkodiert werden. Statt
 +<code>
 +measure=Average Wage,Average Wage Appx MOE,Record Count&drilldowns=Major Occupation Group&Workforce Status=true&Record Count>=5
 +</code>
 +muss man also schreiben:
 +<code>
 +measure=Average%20Wage,Average%20Wage%20Appx%20MOE,Record%20Count&drilldowns=Major%20Occupation%20Group&Workforce%20Status=true&Record%20Count>=5
 +</code>
 +Damit wir diese Enkodierung nicht von Hand erledigen müssen, gibt es die Klasse ''URLEncoder'', deren Anwendung im folgenden Beispiel gezeigt wird.
 +</WRAP>
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%;" data-java-online="{'withBottomPanel': false, 'id': 'httptest1a'}">
 +<script type="text/plain" title="Http-Test.java">
 +HttpClient client = new HttpClient();
 +HttpRequest request = new HttpRequest();
 +
 +String parameter = URLEncoder.encode("measure=Average Wage,Average Wage Appx MOE,Record Count&drilldowns=Major Occupation Group&Workforce Status=true&Record Count>=5");
 +request.uri("https://ostrich-api.datausa.io/api/data?" + parameter);
 +
 +HttpResponse response = client.send(request);
 +println(response.body());
 +
 +println("\nResponse-Status: " + response.statusCode(), Color.green);
 +// Ausgabe der Response-Header:
 +println("\nHeader:");
 +for (HttpHeader header : response.headers()) {
 +   print(header.key + ": ", Color.lightblue);
 +   println(header.value, Color.lightcoral);
 +}
 +</script>
 +
 +</div>
 +
 +</HTML>
  
 +===== Aufbereiten der Json-Daten (JsonParser) =====
 Die Ausgabe liegt im Json-Format vor. Zum Aufbereiten nutzen wir die JsonParser-Klasse der Online-IDE. Sie konvertiert die Json-Zeichenkette in einen Objektbaum. Wir betrachten zunächst den Beginn der Zeichenkette: Die Ausgabe liegt im Json-Format vor. Zum Aufbereiten nutzen wir die JsonParser-Klasse der Online-IDE. Sie konvertiert die Json-Zeichenkette in einen Objektbaum. Wir betrachten zunächst den Beginn der Zeichenkette:
 <code javascript> <code javascript>
Zeile 57: Zeile 104:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'httptest2'}">+<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'httptest2'}">
 <script type="text/plain" title="Http-Test 2.java"> <script type="text/plain" title="Http-Test 2.java">
 HttpClient client = new HttpClient(); HttpClient client = new HttpClient();
Zeile 64: Zeile 111:
  
 HttpResponse response = client.send(request); HttpResponse response = client.send(request);
-println(response.body());+ 
 +JsonElement rootElement = JsonParser.parse(response.body()); 
 +JsonElement data = rootElement.getAttributeValue("data"); 
 + 
 +for (JsonElement row : data.getArrayValues()) { 
 +   print(row.getAsString("Major Occupation Group"), Color.lightsteelblue); 
 +   print(" -> ", Color.red); 
 +   println(Math.round(row.getAsDouble("Average Wage")) + " $", Color.lightgreen); 
 +
 </script> </script>
  
api/documentation/http/start.txt · Zuletzt geändert: 2023/04/16 08:26 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki