build.gradle新加:
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
在AndroidManifest.xml添加权限
<uses-permission android:name="android.permission.INTERNET"/>
源码如下:
HttpRequest.java
package com.example.myclient.http;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;public class HttpRequest {private Call mCall;public HttpRequest(String url) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().get().url(url).build();mCall = client.newCall(request);}public void request(Callback callback){if(mCall != null){if(mCall.isExecuted()){mCall.clone().enqueue(callback);}else{mCall.enqueue(callback);}}}}
MainActivity.java
package com.example.myclient;import android.os.Bundle;import com.example.myclient.http.HttpRequest;import com.google.android.material.floatingactionbutton.FloatingActionButton;import com.google.android.material.snackbar.Snackbar;import androidx.appcompat.app.AppCompatActivity;import androidx.appcompat.widget.Toolbar;import android.util.Log;import android.view.View;import android.view.Menu;import android.view.MenuItem;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public class MainActivity extends AppCompatActivity {private static final String URL = "http://192.168.20.59/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);FloatingActionButton fab = findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show();}});final HttpRequest request = new HttpRequest(URL);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {request.request(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.e("error", "请求失败");}@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.e("success", "请求成功:" + response.body().string());}});}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
源码打包下载地址:
/fengfanchen/AndroidReverse/tree/master/OkHttp3Demo