下面列出了怎么用com.squareup.okhttp.Callback的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected void performGet(String path) throws Exception {
Request request = new Request.Builder()
.url(path)
.build();
final CompletableFuture<Void> future = new CompletableFuture<>();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request req, IOException e) {
future.completeExceptionally(e);
}
@Override
public void onResponse(Response response) throws IOException {
try {
response.body().close();
} finally {
future.complete(null);
}
}
});
future.get();
}
public void loginWithQQopenid(final Activity activity){
OkhttpUtil.getIns().loginWithQQopenid(mOpenId, new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.d(TAG, "onFailure: ");
}
@Override
public void onResponse(com.squareup.okhttp.Response response) throws IOException {
//NOT UI Thread
String result = response.body().string();
handleLogin(activity, result, Constants.HX_DEFAULT_PASSWORD);
mViewRef.get().loginSuccess();
}
});
}
public static void startParse(final String storeName, final Context context, final SpiceManager spiceManager) {
Toast.makeText(context, AptoideUtils.StringUtils.getFormattedString(context, R.string.subscribing, storeName), Toast.LENGTH_SHORT).show();
GetSimpleStoreRequest request = new GetSimpleStoreRequest();
request.store_name = storeName;
CheckSimpleStoreListener checkStoreListener = new CheckSimpleStoreListener();
checkStoreListener.callback = new CheckSimpleStoreListener.Callback() {
@Override
public void onSuccess() {
addStoreOnCloud(storeName, context, spiceManager);
}
};
spiceManager.execute(request, checkStoreListener);
}
public void execute(final Task task) {
log.info("Started task with {} urls", task.getUrls().size());
task.start();
for(int i = 0; i < task.getUrls().size(); i++) {
final int index = i;
final long time = System.currentTimeMillis();
String url = task.getUrls().get(i);
Request req = new Request.Builder().get().url(url).build();
client.newCall(req).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
task.fail(index, time, request, e);
}
@Override
public void onResponse(Response response) throws IOException {
task.success(index, time, response);
}
});
}
}
@Override
public void post(final String url, final RequestParams params,
final Net.Parser<T> parser,
final Net.Callback<T> callback,
final Object tag) {
MultipartBuilder builder = createRequestBody(params);
Request request = new Request.Builder()
.url(url).post(builder.build()).build();
call(request, parser, callback, tag);
}
@Advice.OnMethodEnter(suppress = Throwable.class)
private static void onBeforeEnqueue(@Advice.Origin Class<? extends Call> clazz,
@Advice.FieldValue(value = "originalRequest", typing = Assigner.Typing.DYNAMIC, readOnly = false) @Nullable Request originalRequest,
@Advice.Argument(value = 0, readOnly = false) @Nullable Callback callback,
@Advice.Local("span") Span span) {
if (tracer == null || tracer.getActive() == null || callbackWrapperCreator == null) {
return;
}
final WrapperCreator<Callback> wrapperCreator = callbackWrapperCreator.getForClassLoaderOfClass(clazz);
if (originalRequest == null || callback == null || wrapperCreator == null) {
return;
}
final AbstractSpan<?> parent = tracer.getActive();
Request request = originalRequest;
URL url = request.url();
span = HttpClientHelper.startHttpClientSpan(parent, request.method(), url.toString(), url.getProtocol(),
OkHttpClientHelper.computeHostName(url.getHost()), url.getPort());
if (span != null) {
span.activate();
if (headerSetterHelperManager != null) {
TextHeaderSetter<Request.Builder> headerSetter = headerSetterHelperManager.getForClassLoaderOfClass(Request.class);
if (headerSetter != null) {
Request.Builder builder = originalRequest.newBuilder();
span.propagateTraceContext(builder, headerSetter);
originalRequest = builder.build();
}
}
callback = wrapperCreator.wrap(callback, span);
}
}
AuthTask(String urlPart, String serverAddr, int method, String json, Callback callback) {
this.urlPart = urlPart;
this.serverAddr = serverAddr;
this.method = method;
this.json = json;
this.callback = callback;
}
public OkHttpListenableFuture(Call call) {
this.call = call;
this.call.enqueue(new Callback() {
@Override
public void onResponse(Response response) {
set(new OkHttpClientHttpResponse(response));
}
@Override
public void onFailure(Request request, IOException ex) {
setException(ex);
}
});
}
@Override
public void login(String username, String password, final NetCallback netCallback) {
OkhttpUtil.getIns().login(username, password, new Callback() {
@Override
public void onFailure(Request request, IOException e) {
netCallback.onFail(e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(),netCallback);
}
});
}
@Override
public void autoLogin(final NetCallback netCallback) {
Log.d(TAG, "autoLogin: ");
OkhttpUtil.getIns().autoLogin(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
netCallback.onFail(e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(), netCallback);
}
});
}
@Override
public void getUserList(String requestPage, final NetCallback netCallback) {
OkhttpUtil.getIns().getUserList(requestPage, new Callback() {
@Override
public void onFailure(Request request, IOException e) {
netCallback.onFail(e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(), netCallback);
}
});
}
@Override
public void pullRefreshUser(final NetCallback netCallback) {
OkhttpUtil.getIns().pullRefreshUser(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
netCallback.onFail(e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(), netCallback);
}
});
}
@Override
public void getNewsList(String requestPage, final NetCallback netCallback) {
OkhttpUtil.getIns().getNewsList(requestPage, new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(), netCallback);
}
});
}
@Override
public void likeNews(String newsId, final NetCallback netCallback) {
OkhttpUtil.getIns().likeNews(newsId, new Callback() {
@Override
public void onFailure(Request request, IOException e) {
netCallback.onFail(e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
handleStringResponse(response.body().string(), netCallback);
}
});
}
public AuthTaskUrlShortener(final Callback mCallBack, final String longUrl, Activity context, Account account, JSONObject jsonObject, String requestType){
this.mOkHttpClient = new OkHttpClient();
this.mCallBack = mCallBack;
this.longUrl = longUrl;
this.mActivity = context;
this.mAccount = account;
this.mJsonObject = jsonObject;
this.mRequestType = requestType;
}
public ListProjectsTask(Context context, String url, Callback callback, String token) {
this.mContext = context;
this.url = url;
this.callback = callback;
httpClient = new OkHttpClient();
this.mToken = token;
}
public RefreshAccessTokenTask(final Callback mCallBack, final String mRefreshToken, String clientId, String code){
this.mOkHttpClient = new OkHttpClient();
this.mCallBack = mCallBack;
this.mRefreshToken = mRefreshToken;
this.mClientId = clientId;
this.mCode = code;
}
public RequestAccessTokenTask(final Activity activity, final Callback mCallBack, final String url, String clientId, String code){
this.mActivity = activity;
this.mOkHttpClient = new OkHttpClient();
this.mCallBack = mCallBack;
this.url = url;
this.mClientId = clientId;
this.mCode = code;
}
public static void getRawHtmlFromUrl(String url, Callback callback) {
if (callback == null || TextUtils.isEmpty(url)) {
return ;
}
Request.Builder builder = new Request.Builder();
builder.url(url);
Request request = builder.build();
HttpUtil.enqueue(request, callback);
}
AuthTask(String urlPart, String serverAddr, int method, String json, Callback callback) {
this.urlPart = urlPart;
this.serverAddr = serverAddr;
this.method = method;
this.json = json;
this.callback = callback;
}
public OkHttpListenableFuture(Call call) {
this.call = call;
this.call.enqueue(new Callback() {
@Override
public void onResponse(Response response) {
set(new OkHttpClientHttpResponse(response));
}
@Override
public void onFailure(Request request, IOException ex) {
setException(ex);
}
});
}
@Override
protected void onDataRefresh() {
Utils.getRawHtmlFromUrl(articleBean.getUrl(), new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.d(TAG, "onFailure: " + e.getMessage());
}
@Override
public void onResponse(final Response response) throws IOException {
final String rawData = response.body().string();
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
ScienceContentParser myParse = new ScienceContentParser(rawData);
String data = myParse.getEndStr();
scrollView.setVisibility(View.VISIBLE);
scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
topImage.setTranslationY(Math.max(-scrollY / 2, -DisplayUtil.dip2px(getBaseContext(), 170)));
}
});
contentView.loadDataWithBaseURL("file:///android_asset/", "<link rel=\"stylesheet\" type=\"text/css\" href=\"guokr.css\" />" + data, "text/html", "utf-8", null);
}
});
}
});
if(HttpUtil.isWIFI == true || Settings.getInstance().getBoolean(Settings.NO_PIC_MODE, false) == false) {
setMainContentBg(articleBean.getImage_info().getUrl());
}
hideLoading();
}
private void newRequestCall(Callback callback, String url, RequestBody requestBody) {
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = mOkHttpClient.newCall(request);
call.enqueue(callback);
}
@Override
public void get(final String url, final Net.Parser<T> parser,
final Net.Callback<T> callback,
final Object tag) {
final Request request = new Request.Builder()
.url(url).build();
call(request, parser, callback, tag);
}
@Override
public void post(final String url, final String json,
final Net.Parser<T> parser,
final Net.Callback<T> callback, final Object tag) {
Request request = new Request.Builder()
.url(url).post(createJsonBody(json)).build();
call(request, parser, callback, tag);
}
@Override
public void put(final String url, final String json,
final Net.Parser<T> parser,
final Net.Callback<T> callback, final Object tag) {
Request request = new Request.Builder()
.url(url).put(createJsonBody(json)).build();
call(request, parser, callback, tag);
}
@Override
public void delete(final String url, final Net.Parser<T> parser,
final Net.Callback<T> callback,
final Object tag) {
final Request request = new Request.Builder()
.url(url).delete().build();
call(request, parser, callback, tag);
}
public void get(){
//get Request
Request myGetRequest = new Request.Builder()
.url("https://api.github.com/users/florent37")
.build();
okHttpClient.newCall(myGetRequest).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
//le retour est effectué dans un thread différent
final String text = response.body().string();
final int statusCode = response.code();
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(text);
}
});
}
});
}
public void post(){
MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8");
String myJson = "{}";
//post Request
Request myGetRequest = new Request.Builder()
.url("https://api.github.com/users/florent37")
.post(RequestBody.create(JSON_TYPE, myJson))
.build();
okHttpClient.newCall(myGetRequest).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
//le retour est effectué dans un thread différent
final String text = response.body().string();
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(text);
}
});
}
});
}
@Override
public Callback wrap(final Callback delegate, Span span) {
return new CallbackWrapper(span, delegate);
}