Я использовал JAVA HttpClient для входа в API
Затем HttpClient выполняется в al oop и использует эту функцию (checkZipFile), после первого раза он зависает на "client.execute (post ) ".
private String checkZipFile(HttpClient client, File zipFile){
String errCode = "";
try {
HttpPost post = new HttpPost(URL_API);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("command", "ImportCustomMaster");
builder.addTextBody("type", "csvZip");
builder.addBinaryBody(
"dataFile", zipFile);
builder.addTextBody("encoding", "932");
HttpEntity multipart = builder.build();
post.setEntity(multipart);
HttpResponse response = client.execute(post); //<-- IT HANGS HERE
System.out.println("\nSending 'POST' request to URL : " + URL_API);
System.out.println("Post parameters : " + "dataFile: " + zipFile.getName());
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(result.toString())));
doc.getDocumentElement().normalize();
Node nNode = doc.getElementsByTagName("error").item(0);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
errCode = eElement.getElementsByTagName("code").item(0).getTextContent();
System.out.println("Error Code : " + errCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}catch (ConnectException e) {
System.out.println(e.getMessage());
return "";
} catch (Exception e) {
e.printStackTrace();
return "";
}
return errCode;
}
Я точно не знаю причину, почему, но, по крайней мере, вызывается API, а затем он зависает из-за API или моей программы? Есть ли инструменты для расследования этого?