【问题标题】:AsyncHttpClient - POST request over HTTPSAsyncHttpClient - 通过 HTTPS 的 POST 请求
【发布时间】:2016-03-01 20:21:08
【问题描述】:

我正在开发一个允许用户对内容进行评分的新 Android 应用。由于通过 HTTPS 的异步请求 (POST) 发送速率。不幸的是,该请求没有到达我的网络服务。当我查看日志访问日志时,URL 被截断。您可以在下面找到相关代码。

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(/*..*/);
        }
    });
}

当我设置断点并检查请求时,它看起来像:

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

但是,在访问日志中,“?”之后的 URL 被截断了。 :

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

因此,我在响应中得到了我无法在 JSON 中解析的 index.php 的 HTML。

提前感谢您的帮助。

【问题讨论】:

    标签: android ssl https android-async-http


    【解决方案1】:

    我有两个建议给你。

    1. 对参数的每个部分使用来自 UrlEncoder.encode("") 的方法

    2. 不要使用查询字符串参数将数据发布到服务器。

    【讨论】:

    • 实际上,一些查询字符串参数是 base64 编码的,并且损坏了我的 HTTP 请求。我通过在发布的数据中传递它们解决了这个问题。谢谢(抱歉耽搁了)。
    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2013-02-01
    • 2018-08-03
    • 2016-06-27
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多