Tôi có một webservice chấp nhận phương thức POST với XML. Nó làm việc tốt sau đó tại một số dịp ngẫu nhiên, nó không giao tiếp với máy chủ ném IOException với thông báo The target server failed to respond
. Các cuộc gọi tiếp theo hoạt động tốt.Lỗi tạm thời Apache HttpClient: NoHttpResponseException
Nó xảy ra chủ yếu, khi tôi thực hiện một số cuộc gọi và sau đó để ứng dụng của tôi nhàn rỗi trong khoảng 10-15 phút. cuộc gọi đầu tiên mà tôi thực hiện sau đó sẽ trả về lỗi này.
tôi đã cố gắng vài điều ...
tôi thiết lập xử lý retry như
HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() {
public boolean retryRequest(IOException e, int retryCount, HttpContext httpCtx) {
if (retryCount >= 3){
Logger.warn(CALLER, "Maximum tries reached, exception would be thrown to outer block");
return false;
}
if (e instanceof org.apache.http.NoHttpResponseException){
Logger.warn(CALLER, "No response from server on "+retryCount+" call");
return true;
}
return false;
}
};
httpPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, retryHandler);
nhưng retey này không bao giờ được gọi tới. (vâng tôi đang sử dụng đúng mệnh đề instanceof). Trong khi gỡ lỗi lớp này không bao giờ được gọi.
Tôi thậm chí đã thử thiết lập HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
nhưng không sử dụng. Ai đó có thể gợi ý tôi có thể làm gì bây giờ?
QUAN TRỌNG Bên cạnh việc tìm hiểu lý do tại sao tôi nhận ngoại lệ, một trong những mối quan tâm quan trọng tôi có là tại sao người thử lại không hoạt động ở đây?
Tôi không nghĩ rằng đó là một cái gì đó với mã khách hàng. Có thể máy chủ đích quá bận rộn trong việc xử lý phản hồi không? – kosa
Tôi đã cố gắng để đánh bom máy chủ đích nhưng nó hoạt động tốt. Tôi thậm chí đã cố gắng thực hiện các bước tương tự để tái sản xuất lỗi bằng cách sử dụng fiddler, nhưng không may mắn! –
Loại máy chủ web nào đang chạy dịch vụ và trong thời gian chờ 10-15 phút là dịch vụ nhận các yêu cầu khác hoặc dịch vụ không hoạt động? – Shawn