Nach dem Durchlaufen des Codes von Olingo Client-Bibliothek kam eine Abhilfe für diese.
ODataClient
hat eine Configuration
Eigenschaft, die HttpClientFactory
Parameter hat. Ich musste eine Klasse erstellen, die DefaultHttpClientFactory
erweitert und überschreiben seine Methoden, um HttpClient
mit Timeout zu aktualisieren und Richtlinienänderungen erneut zu versuchen.
Kompletter Code ist wie folgt.
private class RequestRetryHttpClientFactory extends DefaultHttpClientFactory {
private final int HTTP_REQUEST_TIMEOUT = 2 * 60 * 1000;
@Override
public org.apache.http.impl.client.DefaultHttpClient create(HttpMethod method, URI uri) {
final HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
@Override
public boolean retryRequest(IOException e, int i, HttpContext httpContext) {
Log.d(getClass().getSimpleName(), "RETRY REQUEST");
return false;
}
};
final DefaultHttpClient httpClient = super.create(method, uri);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), HTTP_REQUEST_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), HTTP_REQUEST_TIMEOUT);
httpClient.setHttpRequestRetryHandler(myRetryHandler);
return httpClient;
}
}
Ich habe dies meinem oDataClient wie unten hinzugefügt.
ODataClient oDataClient = ODataClientFactory.getV4();
oDataClient.getConfiguration().setHttpClientFactory(new RequestRetryHttpClientFactory());
ODataEntityCreateRequest<ODataEntity> req = oDataClient.getCUDRequestFactory()
.getEntityCreateRequest(uri, oDataEntity);
Ich hoffe, das jemand helfen.
teilen Sie Ihren Code. –