2

I am starting then 4 post after each other. But I catch only response from 3 of the 4 posts. Can somebody explain to me why? I tried it also with get and it has the same problem. Am I doing the posts to quick after each other?

Resclient class:

public class RestClient {
    private static AsyncHttpClient client = new AsyncHttpClient();

    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.post(url, params, responseHandler);
    }
}

Webservice resolver:

public class WSBeer extends WSBase {
    public WSBeer(OnWSRequestCompleted listener, Context context) {
        super(listener, context);
    }
    public void getAll(String date) throws JSONException {
        Tools.LOG_DEBUG("GetAllBeer");
        RequestParams params    = new RequestParams();
        params.add("date", date);

        RestClient.post(url, params, new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(JSONObject response) {
                Tools.LOG_DEBUG("WSBeer onSucces: " + response);
                listener.onRestTaskCompleted(Constants.FUNCTION_DB_BEER, response);
            }

            @Override
            public void onFailure(Throwable e, JSONArray errorResponse) {
               Tools.LOG_DEBUG("WSBeer getAll: " + errorResponse);
                handleError(e, errorResponse, null);
            }

            @Override
            public void onFailure(Throwable e, JSONObject errorResponse) {
                Tools.LOG_DEBUG("WSBeer getAll: " + errorResponse);
                handleError(e, null, errorResponse);
            }
        });
    }
}

SyncHandler class:

public class SyncHandler implements OnWSRequestCompleted {

    private OnSyncListener listener;
    private Context context;

    private WSBeer wsBeer;

    public SyncHandler(OnSyncListener listener, Context context) {
        this.listener = listener;
        this.context = context;
    }

    @Override
    public void onRestTaskCompleted(int function, JSONObject response) {

        switch (function) {
            case Constants.FUNCTION_DB_BEER:
                List<Beer> beerList = null;
                try {
                    beerList = ResponseBeer.getAll(response);
                } catch (IOException e) {
                    Tools.LOG_ERROR(e);
                }
                Tools.LOG_DEBUG("Beers");
                if (beerList != null) {
                    new SaveBeerHelper(listener).execute(beerList.toArray(new Beer[beerList.size()]));
                }
                break;
        }
    }

    public void syncBeer() {
        wsBeer = new WSBeer(this, context);

        try {
            Tools.LOG_DEBUG("Start loading beer...");
            String date = getSyncDate(Constants.FUNCTION_DB_BEER);
            wsBeer.getAll(date);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    private String getSyncDate(int databaseId) {
        SyncData syncData = Shared.dbRepo.syncRepository.getById(databaseId);

        if (syncData != null) {
            Tools.LOG_DEBUG("SyncData: " + syncData.getSyncDate().toString());
            return syncData.getSyncDate().toString();
        } else {
            new SyncData(databaseId).Save(Shared.dbRepo);
        }
        Tools.LOG_DEBUG("SyncData: ");
        return "";
    }
}

WEBSERVICE ACTION:

public function bierenAction()
{
    $this->view->status = 204;  //Nog geen content

    if ($this->getRequest()->isPost()){
        $date = $this->postParam('date');
        if ($date != "") {
            $bieren = self::$proxyBier->getBierenByUpdated($date);
        } else {
            $bieren = self::$proxyBier->getBieren();
        }
    } else {
        $bieren = self::$proxyBier->getBieren();
    }

    $this->view->data = $bieren;

    $this->view->status = 200; //Alles oke
    $this->view->ajax();
}
kevingoos
  • 3,785
  • 4
  • 36
  • 63

2 Answers2

1

Also you can use this instead https://github.com/leonardoxh/AsyncOkHttpClient this library just use OkHttpClient instead of Apache librarys, and this library is the base codes for Loopj AsyncHttpClient 2.0 (where the library will be re implemented with Square OkHttp)

Leonardo
  • 155
  • 3
0

I used the newer version of async-http library

compile 'com.loopj.android:android-async-http:1.4.5-SNAPSHOT'

and everything works like a charm :)

kevingoos
  • 3,785
  • 4
  • 36
  • 63