2

我开始然后4个帖子一个接一个。但我只收到 4 个帖子中 3 个的回复。有人可以向我解释为什么吗?我也用get尝试过,它有同样的问题。我在做帖子是为了快速跟进吗?

客户端类:

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

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

网络服务解析器:

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 类:

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 "";
    }
}

网络服务行动:

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();
}
4

2 回答 2

1

您也可以使用它来代替https://github.com/leonardoxh/AsyncOkHttpClient这个库只使用 OkHttpClient 而不是 Apache 库,这个库是 Loopj AsyncHttpClient 2.0 的基本代码(该库将使用 Square OkHttp 重新实现)

于 2014-04-04T17:37:04.337 回答
0

我使用了较新版本的 async-http 库

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

一切都像一个魅力:)

于 2014-04-09T10:26:22.847 回答