Android常用開源庫———————————OkHttp的使用方法
阿新 • • 發佈:2018-11-24
OkHttp是一個優秀的網路通訊庫,GitHub專案主頁地址。
基本使用
在專案中中新增OkHttp庫的依賴。.
implementation("com.squareup.okhttp3:okhttp:3.12.0")
OkHttp進行Get請求
//建立一個OkHttpClient的例項 OkHttpClient client = new OkHttpClient(); //建立一個Request物件 Request request = new Request.Builder().build; //通過url()方法來設定目標的網路地址 Request request = newRequest.Builder().url("http://www.baidu.com").build(); //呼叫newCall()方法來建立一個Call物件 Response response = client.newCall(request).exute(); //Response物件就是伺服器返回的資料,通過如下寫法得到返回的具體內容 String responseData = response.body().string()
OkHttp進行Post請求
//構建一個RequestBody物件存放待提交的引數 RequestBody requestBody = newFormBody.Builder().add("username","admin").add("password","12345").build(); //呼叫post()方法 Request request = new Request.Builder().uirl("http://www.baidu.com").post(requestBody).build();
接下來的操作和Get請求一樣
同步請求時,需要開啟子執行緒;非同步請求時呼叫enqueue,無需開啟子執行緒。
public class MainActivity extends AppCompatActivity implementsView.OnClickListener{ TextView responseText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button sendRequest = (Button) findViewById(R.id.send_request); Button sendAsyncRequest = (Button) findViewById(R.id.send_asyncRequest); responseText = (TextView) findViewById(R.id.response_text); sendRequest.setOnClickListener(this); sendAsyncRequest.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.send_request: sendRequestWithOkHttp(); break; case R.id.send_asyncRequest: sendAsyncRequestWithOkHttp(); break; default: break; } } private void sendAsyncRequestWithOkHttp() { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("http://www.baidu.com").build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Toast.makeText(MainActivity.this,"get failed", Toast.LENGTH_SHORT).show(); } @Override public void onResponse(Call call, Response response) throws IOException { final String res = response.body().string(); runOnUiThread(new Runnable() { @Override public void run() { responseText.setText(res); } }); } }); } private void sendRequestWithOkHttp() { new Thread(new Runnable() { @Override public void run() { try{ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("http://www.baidu.com").build(); Response response = client.newCall(request).execute(); String responseData = response.body().string(); showResponse(responseData); } catch (Exception e) { e.printStackTrace(); } } }).start(); } private void showResponse(final String response) { runOnUiThread(new Runnable() { @Override public void run() { responseText.setText(response); } }); } }