Java android asycn http:从不发送http请求
我正在使用android async http 1.4.5,但我发现它从未调用我的服务器,以下是我的代码:Java android asycn http:从不发送http请求,java,android,httpclient,android-async-http,Java,Android,Httpclient,Android Async Http,我正在使用android async http 1.4.5,但我发现它从未调用我的服务器,以下是我的代码: public class HttpUtils { private static AsyncHttpClient client = new AsyncHttpClient(); public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
public class HttpUtils {
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
params.setUseJsonStreamer(true);
client.get(url, params, responseHandler);
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
params.setUseJsonStreamer(true);
Log.i("URL", url);
client.post(url, params, responseHandler);
}
}
以下是我如何定义我的处理程序:
public abstract class JsonResponseHandler extends AsyncHttpResponseHandler {
private static final String TAG = "JSON_RESPONSE_HANDLER";
public abstract void onSuccess(int statusCode, Header[] headers, JSONObject jsonObject);
public abstract void onFailure(int statusCode, Header[] headers, JSONObject jsonObject);
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.i(TAG, "on success");
onSuccess(statusCode, headers, parseObject(responseBody));
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.i(TAG, "on failure");
onFailure(statusCode, headers, parseObject(responseBody));
}
private JSONObject parseObject(byte[] response) {
JSONObject jsonObj = null;
try {
String json = new String(response, "UTF-8");
jsonObj = new JSONObject(json);
} catch (Exception e) {
e.printStackTrace();
}
return jsonObj;
}
}
在一些调试工作之后,我发现我的代码实际上执行了client.post(…)
,但我的服务器没有收到来自它的任何调用
编辑
下面是我在测试用例中如何使用它:
public class VerifyCodeTest extends TestCase {
private static final String TAG ="VERIFY_CODE_TEST";
public void testGetVerifyCode(){
Log.i(TAG, "Hello World");
VerifyCodeTransaction vc= new VerifyCodeTransaction("167xxxx137");
vc.execute(new JsonResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject jsonObject) {
Log.i(TAG, "SUCCESS");
Log.i(TAG, jsonObject.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, JSONObject jsonObject) {
Log.i(TAG, "FAILURE");
Log.i(TAG, jsonObject.toString());
}
});
}
}
我不知道您是在测试用例中还是在应用程序中遇到这个问题。我认为这个库对单元测试不起作用!!资料来源: 我以前也遇到过类似的库问题,我通过从github repo中的源代码编译库来解决它
也许最好使用最新版本的库:)如何判断服务器没有收到请求?另外,您是否尝试过使用
curl
或httpie
进行调试,以确认url/params是否正确?@user2713030,我确信服务器没有收到请求,因为我同时(在另一台机器上)开发服务器。url是正确的,我已经用postman
对其进行了测试。您知道响应中需要什么类型或对象吗?我曾经遇到过类似的事情。我覆盖了onSuccess(…,JSONObject response)
,什么也没有收到,但它与onSuccess(…,JSONArray response)
一起工作。与JSONObject
vsString
相同。问题是,client.post()
不向服务器发送请求,太奇怪了!另外,我是从一个android测试项目中使用它的。您的客户端是在设备上还是在emulstor上?