1

LoopJ AndroidAsyncHttp 上的 POST 请求有问题。我定义的参数不是由客户端发送的。

就像在示例中一样,我为 AsyncHTTPClient 构建了一个自己的类“RestClient”

public class RestClient {
  private static final String BASE_URL = "http://www.myserver.de/picbox/";

  private static AsyncHttpClient client = new AsyncHttpClient();

  /**
   * GET-Request
 * @param relativeURL
 * @param params
 * @param responseHandler
 */
public static void get(String relativeURL, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      //System.out.println(getAbsoluteUrl(relativeURL));
      client.get(getAbsoluteUrl(relativeURL), params, responseHandler);
      client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
  }


  /**
   * POST-Request
 * @param relativeURL
 * @param params
 * @param responseHandler
 */
public static void post(String relativeURL, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(getAbsoluteUrl(relativeURL), params, responseHandler);
      client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
  }


  /**
   * Construct final URL for request
 * @param relativeUrl
 * @return
 */
private static String getAbsoluteUrl(String relativeUrl) {
      return BASE_URL + relativeUrl;
  }
}

在我的活动中,我以这种方式使用客户端:

私人布尔上传图像(){

    String img64 = encodeTobase64(bitmap);
    Log.d(TAG, img64);

    RequestParams params = new RequestParams();
    params.put("userid", userID);
    params.put("username", username);
    params.put("img64", img64);

    RestClient.post("pictures/upload", params, new AsyncHttpResponseHandler() {

        // If request is successful
        @Override
        public void onSuccess(String response) {
            Log.d(TAG, response);
            //
        }

        // If request was not succesful, show error
        @Override
        public void onFailure(Throwable error, String content) {
            Log.d(TAG, error.toString());
        }
    });
    return true;

}

在服务器端,我有一个 PHP 脚本,用于响应请求。目前脚本只返回 $_POST 和 $_REQUEST 变量:

var_dump($_POST);
var_dump($_REQUEST);

请求有效并且达到了 onSuccess() 方法,但作为响应我只是得到

array(0){

}
array(0){

}

似乎参数不是由 AsyncHTTPClient 发送的 :( 变量 userid、username 和 img64 已正确初始化为 calss 变量而不是 null。我不知道,可能是什么问题。

希望得到一些帮助。最大限度

4

1 回答 1

1

我遇到过同样的问题。

只需尝试添加为字符串而不是下面的 int

params.put("userid", String.valueOf(userID));

这对我有用。

我认为参数总是期望作为字符串而不是任何其他类型。

于 2014-04-07T07:13:13.080 回答