apache HTTP client : HttpHostConnectException
Bonjour ,
Je développe une application cliente qui appelle une API web. Lors du déploiement de l'application , elle fonctionne très bien sur ma machine et d'autres machines mais en l’exécutant par hasard sur une nouvelle machine d'un client , il n'est plus capable d'appeler l'API et en consultant les logs j'ai eu cette exception :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
SEVERE: org.apache.http.conn.HttpHostConnectException: Connection to http://server.name.org refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at WebServiceCallManager.callWebServiceGET(Unknown Source)
at InfoThreadCaller.call(Unknown Source)
at RegularTestExecutor$1.call(Unknown Source)
at RegularTestExecutor$1.call(Unknown Source)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1259)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:127)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
... 14 more |
Et voici la méthode qui pose le probléme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
public Call callWebServiceGET(WebService ws,int pageNumber) throws Exception {
// TODO Auto-generated method stub
StringBuilder jsonResponse = null;
requestURL = this.serverURL.concat(ws.getWeb_service());
/*
* Define the call
*/
Call call = new Call(ws.getWeb_service());
//SET REQUEST TYPE
call.setRequestType("GET");
/*
* Parameters for a call instance
*/
long startTime =0;
long stopTime=0;
String responseTime="";
String dataSize="";
String requestSent="";
String serverResponse="";
String ch="";
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet getRequest;
requestURL=requestURL.concat("?page="+pageNumber);
getRequest = new HttpGet(requestURL);
System.out.println("Request Sent to Server");
System.out.println(getRequest);
//SET REQUEST SENT
requestSent=getRequest.toString();
call.setRequestSent(requestSent);
this.addGETHeaders(getRequest);
startTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(getRequest);
stopTime = System.currentTimeMillis();
//SET RESPONSE TIME
responseTime = (stopTime - startTime)+" ms";
call.setResponseTime(responseTime);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
jsonResponse = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
jsonResponse.append(line + "\n");
}
serverResponse=jsonResponse.toString();
JsonParseManager parseManager = new JsonParseManager();
List<JSONObject> responseRecordsList = parseManager.getRecords(jsonResponse);
this.setResponseRecordsList(responseRecordsList);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode !=200) {
call.setOperationResult("Failure");
call.setRecordsNb("No Records");
}
else {
ch=String.valueOf(responseRecordsList.size());
call.setOperationResult("Success");
call.setRecordsNb(ch);
}
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024 * 1024);
InputStream inputStream = new ByteArrayInputStream(jsonResponse.toString().getBytes());
try {
IOUtils.copy(inputStream, baos);
byte[] bytes = baos.toByteArray();
dataSize = String.format("%d bytes", bytes.length);
call.setDataSize(dataSize);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String exceptionDetails = sw.toString();
e.getStackTrace();
ErrorLog.logger.log(Level.SEVERE, exceptionDetails);
}
return call;
} |
Il est à noter que l’application marche parfaitement sur d'autres machines.J'ai consulté les forums et j'ai vu des réponses propos des proxys mais j'avais une réponse claire pour résoudre c probléme.
Aide SVP
Merci