原CSDN博客已弃用,文章会逐渐迁移过来。

添加依赖方式见

https://blog.csdn.net/weimeig/article/details/78656734

https://blog.csdn.net/weimeig/article/details/79712595
一、Get请求

创建menu

action.xml

    <?xml version="1.0" encoding="utf-8"?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:title="Get" android:id="@+id/menuGet" />  
    <item android:id="@+id/menuResponse" android:title="Response" />  
    <item android:id="@+id/menuPost" android:title="post" />  
</menu>  

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<android.support.constraint.ConstraintLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context="com.administrator.picassodemo.MainActivity">  


    <ScrollView  
        android:layout_width="match_parent"  
        android:layout_height="match_parent">  
        <TextView  
        android:id="@+id/tvContent"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        />  
    </ScrollView>  


</android.support.constraint.ConstraintLayout>  

MainActivity.java

package com.administrator.picassodemo;  

import android.media.Image;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.widget.ImageView;  
import android.widget.TextView;  

import java.io.IOException;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  

import okhttp3.Call;  
import okhttp3.OkHttpClient;  
import okhttp3.Request;  
import okhttp3.Response;  


public class MainActivity extends AppCompatActivity {  

    private TextView mTextView;  
    private OkHttpClient mClient;  
    private static final String TAG = "MainActivity";  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mTextView = (TextView)findViewById(R.id.tvContent);  


        mClient = new OkHttpClient();  
    }  

    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        getMenuInflater().inflate(R.menu.action,menu);  

        return super.onCreateOptionsMenu(menu);  
    }  

    @Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
        switch (item.getItemId()){  
            case R.id.menuGet:  
                get();  
                break;  
        }  
        return super.onOptionsItemSelected(item);  
    }  

    private void get() {  
        ExecutorService executor = Executors.newSingleThreadExecutor();  
        executor.submit(new Runnable() {  
            @Override  
            public void run() {  

//                -------------------------------  
                Request.Builder builder = new Request.Builder();  
                builder.url("https://raw.githubusercontent.com/square/okhttp/master/README.md");  
                Request request = builder.build();  
                Log.d(TAG, "run: " + request);  
                Call call = mClient.newCall(request);  
                try {  
                    Response response = call.execute();  
                    if (response.isSuccessful()) {  
                        final String string = response.body().string();  
//                        --------  
                        runOnUiThread(new Runnable() {  
                            @Override  
                            public void run() {  
                                mTextView.setText(string);  
                            }  
                        });  
//                        --------  
                    }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
//                -------------------------------  


            }  
        });  
        executor.shutdown();  
    }  
}  

二、get-Response

private void respsonse() {  
       Request request = new Request.Builder()  
               .url("https://raw.githubusercontent.com/square/okhttp/master/README.md")  
               .build();  

       Call call = mClient.newCall(request);  
       call.enqueue(new Callback() {  
           @Override  
           public void onFailure(Call call, IOException e) {  
               Log.d(TAG,"onFailure() called with:call=[" +call +"],e=["+ e +"]");  
           }  

           @Override  
           public void onResponse(Call call, Response response) throws IOException {  
               Log.d(TAG,"onResponse() called with:call=[" +call +"],response=["+ response +"]");  
               int code = response.code();  
               Headers headers = response.headers();  
               String content = response.body().string();  
               String contentType = headers.get("Content-Type");  
               final StringBuilder buf = new StringBuilder();  
               buf.append("code"+code);  
               buf.append("\nHeaders"+headers);  
               buf.append("\nBody"+content);  
               runOnUiThread(new Runnable() {  
                   @Override  
                   public void run() {  
                       mTextView.setText(buf.toString());  
                   }  
               });  
           }  
       });  
   }  

三、Post请求

private void respsonse() {  
        Request request = new Request.Builder()  
                .url("https://raw.githubusercontent.com/square/okhttp/master/README.md")  
                .build();  

        Call call = mClient.newCall(request);  
        call.enqueue(new Callback() {  
            @Override  
            public void onFailure(Call call, IOException e) {  
                Log.d(TAG,"onFailure() called with:call=[" +call +"],e=["+ e +"]");  
            }  

            @Override  
            public void onResponse(Call call, Response response) throws IOException {  
                Log.d(TAG,"onResponse() called with:call=[" +call +"],response=["+ response +"]");  
                int code = response.code();  
                Headers headers = response.headers();  
                String content = response.body().string();  
                String contentType = headers.get("Content-Type");  
                final StringBuilder buf = new StringBuilder();  
                buf.append("code"+code);  
                buf.append("\nHeaders"+headers);  
                buf.append("\nBody"+content);  
                runOnUiThread(new Runnable() {  
                    @Override  
                    public void run() {  
                        mTextView.setText(buf.toString());  
                    }  
                });  
            }  
        });  
    }  

MainActivity完整代码

MainActivity.java

package com.administrator.picassodemo;  

import android.media.Image;  
import android.preference.PreferenceActivity;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.util.Log;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.widget.ImageView;  
import android.widget.TextView;  

import java.io.IOException;  
import java.time.LocalDate;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  

import okhttp3.Call;  
import okhttp3.Callback;  
import okhttp3.Headers;  
import okhttp3.MediaType;  
import okhttp3.OkHttpClient;  
import okhttp3.Request;  
import okhttp3.RequestBody;  
import okhttp3.Response;  


public class MainActivity extends AppCompatActivity {  

    private TextView mTextView;  
    private OkHttpClient mClient;  
    private static final String TAG = "MainActivity";  
    private static final MediaType MEDIA_TYPE_MARKDOWN  
            = MediaType.parse("text/x-markdown; charset=utf-8");  
    private static final String POST_URL = "https://api.github.com/markdown/raw";  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mTextView = (TextView)findViewById(R.id.tvContent);  


        mClient = new OkHttpClient();  
    }  

    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        getMenuInflater().inflate(R.menu.action,menu);  

        return super.onCreateOptionsMenu(menu);  
    }  

    @Override  
    public boolean onOptionsItemSelected(MenuItem item) {  
        switch (item.getItemId()){  
            case R.id.menuGet:  
                get();  
                break;  
            case R.id.menuResponse:  
                respsonse();  
                break;  
            case R.id.menuPost:  
                post();  
                break;  
        }  
        return super.onOptionsItemSelected(item);  
    }  

    private void respsonse() {  
        Request request = new Request.Builder()  
                .url("https://raw.githubusercontent.com/square/okhttp/master/README.md")  
                .build();  

        Call call = mClient.newCall(request);  
        call.enqueue(new Callback() {  
            @Override  
            public void onFailure(Call call, IOException e) {  
                Log.d(TAG,"onFailure() called with:call=[" +call +"],e=["+ e +"]");  
            }  

            @Override  
            public void onResponse(Call call, Response response) throws IOException {  
                Log.d(TAG,"onResponse() called with:call=[" +call +"],response=["+ response +"]");  
                int code = response.code();  
                Headers headers = response.headers();  
                String content = response.body().string();  
                String contentType = headers.get("Content-Type");  
                final StringBuilder buf = new StringBuilder();  
                buf.append("code"+code);  
                buf.append("\nHeaders"+headers);  
                buf.append("\nBody"+content);  
                runOnUiThread(new Runnable() {  
                    @Override  
                    public void run() {  
                        mTextView.setText(buf.toString());  
                    }  
                });  
            }  
        });  
    }  

    private void get() {  
        ExecutorService executor = Executors.newSingleThreadExecutor();  
        executor.submit(new Runnable() {  
            @Override  
            public void run() {  

//                -------------------------------  
                Request.Builder builder = new Request.Builder();  
                builder.url("https://raw.githubusercontent.com/square/okhttp/master/README.md");  
                Request request = builder.build();  
                Log.d(TAG, "run: " + request);  
                Call call = mClient.newCall(request);  
                try {  
                    Response response = call.execute();  
                    if (response.isSuccessful()) {  
                        final String string = response.body().string();  
//                        --------  
                        runOnUiThread(new Runnable() {  
                            @Override  
                            public void run() {  
                                mTextView.setText(string);  
                            }  
                        });  
//                        --------  
                    }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
//                -------------------------------  


            }  
        });  
        executor.shutdown();  
    }  

    private void post(){  
        Request.Builder builder = new Request.Builder()  
                .url(POST_URL)  
                .post(RequestBody.create(MEDIA_TYPE_MARKDOWN,"Hello world github/linguist#1 **cool**, and #1!"));  
        Request request = builder.build();  
        Call call = mClient.newCall(request);  
        call.enqueue(new Callback() {  
            @Override  
            public void onFailure(Call call, IOException e) {  

            }  

            @Override  
            public void onResponse(Call call, Response response) throws IOException {  
                if(response.isSuccessful()){  
                    final String content = response.body().string();  
                    runOnUiThread(new Runnable() {  
                        @Override  
                        public void run() {  
                            mTextView.setText(content);  
                        }  
                    });  
                }  
            }  
        });  

    }  
}