【发布时间】:2016-03-15 14:18:58
【问题描述】:
场景如下:我有一个名为MainActivity的Activity,调用一个名为NetworkManager的OkHttp包装类在后台执行网络发布:
// In MainActivity
NetworkManager manager = new NetworkManager();
try {
manager.post("http://www.example.com/api/", reqObj); // reqObj is a JSONObject
} catch(IOException ioe) {
Log.e(TAG, ioe.getMessage());
}
然后,在NetworkManager中,我以异步模式执行POST动作:
public class NetworkManager {
static String TAG = "NetworkManager";
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
void post(String url, JSONObject json) throws IOException {
//RequestBody body = RequestBody.create(JSON, json);
try {
JSONArray array = json.getJSONArray("d");
RequestBody body = new FormEncodingBuilder()
.add("m", json.getString("m"))
.add("d", array.toString())
.build();
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
// Asynchronous Mode
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(TAG, e.toString());
// what should I put here?
}
@Override
public void onResponse(Response response) throws IOException {
Log.w(TAG, response.body().string());
// what should I put here?
}
});
} catch (JSONException jsone) {
Log.e(TAG, jsone.getMessage());
}
}
}
我想要实现的是在网络 POST 成功或失败后调用MainActivity 中的函数。我怎样才能做到这一点?
【问题讨论】:
-
虽然我没有尝试过你的 OkHttp 问题,但是,IMO,Volley 也是如此,所以请阅读以下链接:stackoverflow.com/questions/33535435/…stackoverflow.com/questions/31602042/… 和 stackoverflow.com/questions/32375295/…。我认为下面@John 的回答对您的问题有用:)