用到的工具 Android Studio
OKhttp相对于HttpURLConnection来说更加的方便和简单实用,具体的方法如下:
在使用okhttp的时候需要引用它开源的库这里给出一个路径方便查看最新的版本
http://github.com/square/okhttp
其中需要导入依赖我导入的如下:
compile 'com.squareup.okhttp3:okhttp:3.10.0'
在使用的实用必须创建okhttp的实例如下:
OkHttpClient client = new OkHttpClient();
如果需要发送请求需要创建一个Request对象
Request request = new Request.Builder().build();
之后调用okHttpClient的newCall()方法创建一个对象来调用他的execute()方法来发送请求和获取服务器返回的数据
Response response = client.newCall(request).execute();
其中response对象就是服务器返回的数据,进行如下操作可以得到返回的内容
String responseData = response.body().string();
如果是发起一条POST请求会比较复杂需要一个Body对象来存放待提交的数据
RequestBody requestBody = new FormBody.Builder()
.add("username","admin")
.add("password","123456")
.build();
然后在Resquest.Builder中调用post()方法RequestBody 对象返回如下:
Request request = new Request.Builder()
.url("http://www.baidu.com")
.post(requestBody)
.build();
获取到的数据操作和GET请求一样,调用execute()方法来发送数据就行具体代码如下:
MainActivity代码如下:
package com.example.administrator.testwebview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ //返回服务器显示的数据,未处理时是HTML代码 TextView responseText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 Button sendRequest = (Button) findViewById(R.id.send_request); responseText = (TextView) findViewById(R.id.response_text); sendRequest.setOnClickListener(this); } //当点击向服务器发送请求时候执行下面代码 @Override public void onClick(View v) { if(v.getId() == R.id.send_request){ //当点击执行发送请求时执行 sendRequestsWithOkHttp(); } } private void sendRequestsWithOkHttp() { //首先开启线程执行网络请求 new Thread(new Runnable() { @Override public void run() { try { //创建okhttp对象的实例 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() { //这里进行UI操作,因为不能在子线程调用UI操作 //将获取到的字符串加载到Text界面显示 responseText.setText(response); } }); } }实现的功能和HttpURLConnection 相同