自定义类扩展AsyncHttpResponseHandler并返回修改后的字节

时间:2017-05-24 19:12:01

标签: java android

我在谷歌搜索了过去3个小时无济于事,我不确定这是否可行。

我在10-12个不同的活动中使用AsyncHttpResponseHandler,并且我在所有这些活动中对初始代码中的“byte [] bytes”执行相同的初始转换,即每个活动的代码大约50行。

如何对字节进行转换,然后返回调用自定义类的活动的最终值?

我如何引用消息变量?

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    AsyncHttpClient client = new AsyncHttpClient();
    client.post(URL, params, new VenueAsyncHttpResponseHandler() {

        @Override
        public void onSuccess(int i, Header[] headers, byte[] bytes) {
            //How do I reference the transformed message here?
            switch (message) {
                case "success":
                    //Do something
                    break;
            }

        }
    });
}
}

使用自定义类

public class VenueAsyncHttpResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
    String byteToString = null;
    JSONObject response = null;
    String message = "";
    try {
        byteToString = new String(bytes, "UTF-8");
        response = new JSONObject(byteToString);
        message = response.getString("response"); //return this to the activity
    } catch (UnsupportedEncodingException | JSONException e) {
        e.printStackTrace();
    }
}

@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {

}
}

1 个答案:

答案 0 :(得分:0)

向您的活动类添加一个方法,该方法可以根据消息执行您想要的操作。然后从onSuccess()调用此方法。

另外,不要创建匿名内部类。而是直接实例化您的自定义类:

VenueAsyncHttpResponseHandler handler = new VenueAsyncHttpResponseHandler();
client.post(URL, params, handler);