Ich habe begonnen, http Client Apache API zu testen. Ich brauche es, weil ich Anfragen senden und Antworten auf virustotal API erhalten möchte. Virus Gesamt API benötigt, um Parameter in der Post-Anforderung:Wie verwende ich die apache-httpClient-API, um Datei + API-Schlüssel und andere Parameter als eine einzige Anfrage zu senden?
- der api Schlüsselwert (einen eindeutigen Wert für jeden Benutzer)
- die Datei selbst, wie ich von ihrer Website zu verstehen.
Zum Beispiel:
>>> url = "https://www.virustotal.com/vtapi/v2/url/scan"
>>> parameters = {"url": "http://www.virustotal.com",
... "apikey": "-- YOUR API KEY --"}
>>> data = urllib.urlencode(parameters)
>>> req = urllib2.Request(url, data)
Im Moment versuche ich, die gleiche Sache in Java anstelle von Python zu tun. Hier ist ein Teil meiner Quellcode kommentiert in den Schritten führen:
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//create post request
HttpPost request = new HttpPost("https://www.virustotal.com/vtapi/v2/file/scan");
//http json header
request.addHeader("content-type", "application/json");
String str = gson.toJson(param);
String fileName = UUID.randomUUID().toString() + ".txt";
try {
//API key
StringEntity entity = new StringEntity(str);
Writer writer = new BufferedWriter(new FileWriter(fileName));
writer.write(VirusDefinitionTest.malware());
request.setEntity(entity);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
FileBody fileBody = new FileBody(new File(fileName));
builder.addTextBody("my_file", fileName);
HttpEntity entity = builder.build();
request.setEntity(entity);
HttpResponse response;
try {
response = httpClient.execute(request);
...
Leider erhalte ich HTTP/1.1 403 Forbidden. Offensichtlich ist der Fehler irgendwo in den Entitäten, aber ich kann nicht finden, wie es geht. Jede Hilfe wäre sehr willkommen.
Das alles funktioniert hervorragend für VirusTotal mit Java. Die "EntityUtils.toString (resEntity)" war das letzte Puzzleteil. – nettie