Es ist erforderlich, sich als Benutzer von Metadata Co., Ltd. zu registrieren und eine Benutzer-ID und ein Kennwort festzulegen.
Um sich als Benutzer zu registrieren, gehen Sie bitte zu hier.
Ich war mir nicht sicher, wie ich die API verknüpfen sollte, aber ich habe verschiedene Dinge ausprobiert und mich für die folgenden Quellen entschieden. Es scheint über ** POST ** zu kommunizieren, und wenn Sie die Bilddaten im Bildteil festlegen, wird JSON erfolgreich zurückgegeben. Ich habe die zu sendenden Bilddaten in Byte erstellt. Möchten Sie diese also in die App importieren?
pom.xml
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.10</version>
</dependency>
WhatCat.java
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
*Was ist diese Katze? API.
*
* @author H.Aoshima
* @version 1.0
*
*/
public final class WhatCat {
/**
* URI.
*/
private static final String SUGGETS_URL = "http://whatcat.ap.mextractr.net/api_query";
/**
*Lauf.
* @param Bytes Bilddaten
* @param Dateiname Name der Bilddatei
* @param userName Benutzername
* @param Passwort Passwort
* @Ergebnis des Urteils zurückgeben
* @löst eine ClientProtocolException aus. Client-Protokollausnahme
* @löst eine IOException IO-Ausnahme aus
*/
public static List<Object> exec(final byte[] bytes, final String fileName, final String userName, final String password)
throws ClientProtocolException, IOException {
//Rückgabewert
List result = null;
//Client-Erstellung
final HttpClient client = HttpClientBuilder.create().build();
//Zeichensatz beim Ersetzen durch ein Bytearray vor dem Codieren
final Charset charset = StandardCharsets.UTF_8;
//Die Zeichenfolge, die Sie codieren möchten
final String source = userName + ":" + password;
//Codiervorgang
final String encoding = Base64.getEncoder().encodeToString(source.getBytes(charset));
final HttpPost post = new HttpPost(WhatCat.SUGGETS_URL);
post.setHeader("Authorization", "Basic " + encoding);
//Legen Sie die Bildwerte in MultipartEntityBuilderi fest
final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("image", bytes, ContentType.MULTIPART_FORM_DATA, fileName);
post.setEntity(builder.build());
//Erhalten Antwort
final HttpResponse response = client.execute(post);
final HttpEntity responseEntity = response.getEntity();
if (response.getStatusLine().getStatusCode() == 200) {
//Wert erhalten
final InputStream is = responseEntity.getContent();
final Reader r = new InputStreamReader(is, charset);
ObjectMapper mapper = new ObjectMapper();
result = mapper.readValue(r, new TypeReference<List<Object>>() {});
}
return result;
}
}
Recommended Posts