我使用JAVA HttpClient登录到一个API
然后HttpClient在一个循环中执行并使用这个函数(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或我的程序?有没有一些工具来调查?
1条答案
按热度按时间rqcrx0a61#
挂起的是API,而不是应用程序。
尝试使用Postman或curl来检查API的响应时间。这可能是因为文件太大或网络连接太慢->尝试发送一个非常小的文件来检查。