AsyncHttpClient - POST 通过 HTTPS 请求
AsyncHttpClient - POST request over HTTPS
我正在开发一个新的 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?
因此,我在响应中得到 index.php 的 HTML,我无法在 JSON 中解析它。
预先感谢您的帮助。
我有两个建议给你。
对参数的每个部分使用来自 UrlEncoder.encode("") 的方法
不使用 post 数据到服务器的查询字符串参数。
我正在开发一个新的 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?
因此,我在响应中得到 index.php 的 HTML,我无法在 JSON 中解析它。
预先感谢您的帮助。
我有两个建议给你。
对参数的每个部分使用来自 UrlEncoder.encode("") 的方法
不使用 post 数据到服务器的查询字符串参数。