Search code examples
androidsslhttpsandroid-async-http

AsyncHttpClient - POST request over HTTPS


I'm developing a new Android app which allow the user to rate the content. The rate is sent thanks to an asynchronous request (POST) over HTTPS. Unfortunately, the request don't reach my webservice. When I took a look at the log access log, the URL is truncated. You can find below the relevant code.

private static AsyncHttpClient getClient()
{
    if(client == null)
    {
        client =  new AsyncHttpClient(true, 80, 443);

        client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
        client.getHttpClient().getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
    }

    return client;
}

public static void createComment(int idArticle, String content, final Context context, final Callback callback)
{
    final User currentUser = RealmManager.getUser();

    RequestParams paramsPost = new RequestParams();
    paramsPost.put("id_article", idArticle);
    paramsPost.put("id_utilisateur", currentUser.getId());
    paramsPost.put("content", content);

    HashMap<String, String> paramsGet = getDefaultParams(context, currentUser, "webservices.createCommentaire");

    getClient().post(createGetURL(currentUser.getURL(), paramsGet), paramsPost, new AsyncHttpResponseHandler()
    {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] response)
        {
            callback.onSuccess(/*..*/);
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e)
        {
            callback.onFailure(/*..*/);
        }
    });
}

When I put a breakpoint and examine the request, it looks like :

https://api.webservices.com/index.php?option=webservices&app_version=2.0&task=createCommentaire&token=XXXXXXXXXXXX&version=v2&format=raw

But, in the access log, the URL is truncated after "?" :

POST - https://api.webservices.com/index.php?

Consequently, I got in the response the HTML of the index.php which I can't parse in JSON.

Thank you in advance for your help.


Solution

  • I have two suggestion for you.

    1. Use from UrlEncoder.encode("") method for every part of your parameters

    2. Do not use query string parameters for post data to server.