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。我不知道,可能是什么问题。
希望得到一些帮助。最大限度