package com.loopj.android.http;
import android.content.Context;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HttpContext;
/**
* Processes http requests in synchronous mode, so your caller thread will be blocked on each
* request
*
* @see com.loopj.android.http.AsyncHttpClient
*/
public class SyncHttpClient extends AsyncHttpClient {
/**
* Creates a new SyncHttpClient with default constructor arguments values
*/
public SyncHttpClient() {
super(false, 80, 443);
}
/**
* Creates a new SyncHttpClient.
*
* @param httpPort non-standard HTTP-only port
*/
public SyncHttpClient(int httpPort) {
super(false, httpPort, 443);
}
/**
* Creates a new SyncHttpClient.
*
* @param httpPort non-standard HTTP-only port
* @param httpsPort non-standard HTTPS-only port
*/
public SyncHttpClient(int httpPort, int httpsPort) {
super(false, httpPort, httpsPort);
}
/**
* Creates new SyncHttpClient using given params
*
* @param fixNoHttpResponseException Whether to fix or not issue, by ommiting SSL verification
* @param httpPort HTTP port to be used, must be greater than 0
* @param httpsPort HTTPS port to be used, must be greater than 0
*/
public SyncHttpClient(boolean fixNoHttpResponseException, int httpPort, int httpsPort) {
super(fixNoHttpResponseException, httpPort, httpsPort);
}
/**
* Creates a new SyncHttpClient.
*
* @param schemeRegistry SchemeRegistry to be used
*/
public SyncHttpClient(SchemeRegistry schemeRegistry) {
super(schemeRegistry);
}
@Override
protected RequestHandle sendRequest(DefaultHttpClient client,
HttpContext httpContext, HttpUriRequest uriRequest,
String contentType, ResponseHandlerInterface responseHandler,
Context context) {
if (contentType != null) {
uriRequest.addHeader("Content-Type", contentType);
}
responseHandler.setUseSynchronousMode(true);
/*
* will execute the request directly
*/
new AsyncHttpRequest(client, httpContext, uriRequest, responseHandler).run();
// Return a Request Handle that cannot be used to cancel the request
// because it is already complete by the time this returns
return new RequestHandle(null);
}
}