2016-03-01 193 views
0

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

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中解析的响应。

非常感谢您的帮助。

回答

1

我有两个建议给你。从UrlEncoder.encode(“”)

  1. 使用你的参数

  2. 不要使用查询字符串参数后的数据服务器的每一个部分的方法。

+0

实际上,一些查询字符串参数是base64编码的,并破坏了我的HTTP请求。我通过传递他们在发布的数据中解决了这个问题。谢谢(抱歉,延误)。 – Schnapse