【Android】简单使用OkHttp进行网络请求

在安卓项目中进行的测试, 因后续需要使用Retrofit进行网络请求, 而 Retrofix底层是使用了Okhttp, 因此稍微学习了一下一共参考

实现过程是在Android项目中进行的:

添加依赖:

implementation 'com.squareup.okhttp3:okhttp:4.9.0' 

 

MainActivity.java

public class MainActivity extends BaseActivity implements Callback {    // 使用 OkHttp 请求数据
    OkHttpClient okHttpClient = new OkHttpClient();
    Request request = new Request.Builder()
            .url("http://songsearch.kugou.com/song_search_v2?keyword=%E7%A7%8B%E6%84%8F%E6%B5%93&page=1&pagesize=10")
            .build();
    Call call = okHttpClient.newCall(request);
    // Response response = call.execute(); // 同步请求,在Android中不适用(不在主线程进行耗时操作)
    call.enqueue(this); // 异步请求, 因为直接写了this, 在当前类实现回调方法


/**
 * OKHttp连接失败
 *
 * @param call
 * @param e
 */
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
    Toast.makeText(mContext, "网络错误", Toast.LENGTH_SHORT).show();
}

/**
 * OKHttp连接成功
 *
 * @param call
 * @param response
 * @throws IOException
 */
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
    Intent intent2viewTest = new Intent(mContext, ViewTestActivity.class);
    // Log.d(TAG, "onResponse: " + Thread.currentThread());

    if (response.code() == 200) {
        String dataStr = Objects.requireNonNull(response.body()).string();
        Bundle bundle = new Bundle();
        bundle.putString(getString(R.string.bundleDataKey_httpTest), dataStr);

        intent2viewTest.putExtra(getString(R.string.bundleKey_httpTest), bundle);
        startActivity(intent2viewTest);

        // handle 通知当前 activity 主线程更新视图
        Message msg = new Message();
        msg.what = 0;
        msg.setData(bundle);
        // mHandler.sendMessage(msg);
    }
}

@Override
public void handlerMsg(Message msg) {
    if (msg.what == 0) {
        Log.d(TAG, "handlerMsg: 更新视图");
        tvTest.setText(msg.getData().getString(getString(R.string.bundleDataKey_httpTest)));
    } else {
        throw new IllegalStateException("Unexpected value: " + msg.what);
    }
}
}

 

posted @ 2021-03-09 21:19  阿丢  阅读(398)  评论(0)    收藏  举报