Rufen Sie die GitHub-API über Javas Socket-API Teil2 auf

Am Anfang

Es ist eine Fortsetzung der Call Rest API von GitHub von der Java Socket API. Versuchen Sie, die GitHub-API, die Dateien für GitHub in das Repository festschreibt, über die Soceket-API von Java aufzurufen.

Implementierungshinweise

1. Was ist vor der Implementierung der Java-Logik zu tun?

Um Änderungen am GitHub-Repository vorzunehmen, müssen wir beim Aufrufen der GitHub-API die Authentifizierung berücksichtigen. Dieses Mal stellen wir im Voraus ein persönliches Zugriffstoken auf GitHub aus, um uns mit der OAuth2-Authentifizierung zu authentifizieren. (Detaillierte Informationen zum Ausstellen eines persönlichen Zugriffstokens finden Sie auf der folgenden Referenzseite.)

2. Informationen zur Java-Logik

Punkte aus der vorherigen Implementierung hinzugefügt

Die folgende Verarbeitung wurde aus Letzte Implementierung hinzugefügt.

Hinweise zu den Ausführungsergebnissen

Referenzseite

Quelle

Test.java


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager;


import com.fasterxml.jackson.databind.ObjectMapper;


public class Test {
	//Fügen Sie Dateien mit der REST-API v3 von GitHub zum Repository von GitHub hinzu
	//Das Format der REST-API v3 lautet
	// /repos/:owner/:repo/contents/:path
	//Wird
	private static final String ACCESS_KEY ="*********";
	private static final String GITHUB_RESTAPI_PATH = "https://api.github.com/repos/triple4649/images/contents/img/mypicture.png?access_token=%s";
	public static void main(String[] args) throws Exception {

		HttpsURLConnection con = createHttpsURLConnection(String.format(GITHUB_RESTAPI_PATH, ACCESS_KEY)
				,"PUT");

		//Übernehmen Sie die Image-Datei mit der Rest-API in GitHub
		putContents(con,createJson());
		//Geben Sie die Header-Informationen der Rest-API-Antwort aus
		printHeaderFields(con);
		//Geben Sie das Ergebnis der Rest-API-Antwort aus
		printBody(con);
		con.disconnect();
	}
	
	//Schreiben Sie JSON in Stream
	private static void putContents(HttpsURLConnection con,byte[] b) throws Exception{
		con.setDoOutput(true);
		OutputStream o = con.getOutputStream();
		o.write(b);
		o.flush();
	}
	
	//Konvertiert eine Datei mit dem angegebenen Pfad in das Base64-Format
	public static String converToBase64(String path)throws Exception{
		return Base64.getEncoder()
				.encodeToString(
						Files.readAllBytes(Paths.get(path)));
	}
	
	//Generieren Sie HttpsURLConnection, indem Sie die HTTP-Sendemethode angeben
	private static HttpsURLConnection  createHttpsURLConnection (String path,String method) throws Exception{
		HttpsURLConnection con = createHttpsURLConnection (path);
		con.setRequestMethod(method);
		return con;
	}
	
	
	//Generieren Sie Daten für CommHub
	private static byte[] createJson() throws Exception{
		Map <String,Object> map = new LinkedHashMap<String,Object>();
		Map <String,String> nestmap=new LinkedHashMap<String,String>();
		nestmap.put("name", "triple");
		nestmap.put("email", "[email protected]");
		map.put("committer",nestmap);
		map.put("message","GitHub API");
		map.put("content",converToBase64("./CA390046.JPG"));
		return new ObjectMapper()
		.writeValueAsBytes(map);
	}
	
	
	//Generieren Sie URLConnection für TLS-Verbindung(Nicht überprüfte Version der Zertifizierung)
	//Die Anforderungsmethode ist die Standardeinstellung(Get)
	private static HttpsURLConnection  createHttpsURLConnection (String path) throws Exception{
		SSLSocketFactory factory = null;
		SSLContext ctx = SSLContext.getInstance("TLS");
		ctx.init(null, new NonAuthentication[] { new NonAuthentication() },
				null);
		factory = ctx.getSocketFactory();

		URL url = new URL(path);
		HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
		con.setSSLSocketFactory(factory);
		return con;
	}
	
	//Header-Informationen ausgeben
	private static void printHeaderFields(HttpsURLConnection con){
		con.getHeaderFields()
		.entrySet()
		.stream()
		.map(e->String.format("key:%s value:%s", e.getKey(),e.getValue()))
		.forEach(System.out::println);
	}
	
	//Informationen zum Ausgabekörper
	private static void printBody(HttpsURLConnection con) throws Exception{
		new BufferedReader(new InputStreamReader(
				con.getInputStream()))
		.lines()
		.forEach(System.out::println);

	}
}

class NonAuthentication implements X509TrustManager {
	@Override
	public void checkClientTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}

	@Override
	public void checkServerTrusted(X509Certificate[] chain, String authType)
			throws CertificateException {
	}

	@Override
	public X509Certificate[] getAcceptedIssuers() {
		return null;
	}
}

Recommended Posts

Rufen Sie die GitHub-API über Javas Socket-API Teil2 auf
Rufen Sie die Java-API von TensorFlow von Scala aus auf
Rufen Sie die Rest-API von GitHub über die Socket-API von Java auf
Rufen Sie Java von JRuby aus auf
Rufen Sie Kotlins versiegelte Klasse von Java aus an
Aufruf API [Aufruf]
Datenverarbeitung mit der Stream-API von Java 8
Rufen Sie die Java-Bibliothek von C mit JNI auf
API-Integration von Java mit Jersey Client
Rufen Sie Java-Methoden aus JavaScript auf, das in Java ausgeführt wird
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Rufen Sie die Salesforce REST-API von Java aus auf
Einführung in Java ab 0 Teil 1
Rufen Sie die Microsoft Emotion API auf, indem Sie Bilddaten direkt von Java senden.
API aufrufen [Vorbereitung]
[Android] Rufen Sie Kotlins Standardargumentmethode von Java aus auf
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
API aufrufen [Handling]
Java Stream API
Java-Übung Teil 1
Rufen Sie die Amazon Product Advertising API 5.0 (PA-API v5) in Java auf
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
Zusammenfassung der Java-Kommunikations-API (1) Verwendung von Socket
Rufen Sie ein in Swift geschriebenes Programm von Processing (Java) auf.
Schnell lernen Java "Einführung?" Teil 3 Von der Programmierung wegreden
API aufrufen [Core Edition]
Packen Sie die API-Antwort (Java)
[Java] Stream API / Map
Eval Java-Quelle von Java
Fehlerbehebung bei der Docker-Client Java API
Greifen Sie über Java auf API.AI zu
Von Java zu Ruby !!
Zabbix API in Java
Java studieren ~ Teil 8 ~ Besetzung
JAVA-Konstruktoraufrufverarbeitung
Cloud9 (Rails) von Github
Diese Katze von Metadata Co., Ltd. Ruft die Katzen-API in Java auf.
JSON in Java und Jackson Teil 1 Gibt JSON vom Server zurück
Implementieren Sie die Java-Schnittstelle in der JRuby-Klasse und rufen Sie sie von Java aus auf
Aufrufen und Verwenden der API in Java (Spring Boot)
[Kotlin] Holen Sie sich Java Constructor / Method von KFunction und rufen Sie es auf