http istemci apache API'sini sınamaya başladım. İhtiyacım var çünkü istekleri göndermek ve virustotal API'ye yanıt almak istiyorum. Virüs toplam API sonrası isteğindeki parametrelere gerektirir: Ben kendi web sitesinden anlaşıldığı olarakDosya + api anahtarı ve diğer parametreleri tek bir istek olarak göndermek için apache httpClient API'sini nasıl kullanırım?
- api anahtarı değeri (her kullanıcı için benzersiz bir değer)
- dosya kendisi. Örneğin
: Şu anda
>>> 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)
, ben Java yerine Python aynı şeyi yapmaya çalışıyorum.
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);
...
Ne yazık ki, HTTP/alma 1.1 403 Yasak: Burada adımlar boyunca rehberlik edecek yorumladı benim kaynak kodunun bir parçasıdır. Açıkçası, hata varlıklar içinde bir yer ama nasıl yapacağımı bulamıyorum. Herhangi bir yardım derinden memnuniyetle karşılanacaktır.
Bu, VirusTotal with Java için harika çalışıyor. EntityUtils.toString (resEntity) ', bulmacanın son parçasıydı. – nettie