OkHttp 3-基本的な使い方

3732 ワード

転載は出典を明記してください。http://www.jianshu.com/p/7919cd2685d3 翻訳者のレベルが限られているので、れんがを歓迎します。読者も原文を読むことができます。
OkHttp
HttpおよびHttp/2をサポートしており、AndroidおよびJavaアプリケーションのネットワーク要求クライアントに適用できる。
概要
Httpは、現代のネットワークアプリケーションにおいてよく使われているプロトコルであり、データ伝達の媒体である。効率的なHttpコードを実行すると、アプリケーションはより速い負荷速度とより少ない帯域幅でデータを要求することができる。OkHttpは効率的なHttp要求クライアントであり、通常は以下のような特徴を持っている。
  • は、大量の要求を同じホストに同時に送信すると、Http/2は、一つのソケットを共有してサポートすることを許可し、サポートする。
  • 接続池の存在は、要求を効果的に低減するために必要な準備動作
  • を有する。
  • はダウンロードデータを自動的に圧縮し、ダウンロードデータのサイズを下げることができます。
  • は、応答データを自動的にキャッシュし、毎回ネットワークを介してネットワークデータ
  • を要求することを回避することができる。
    OkHttpは問題が発生した時に柔軟な処理を守ることができます。よくある接続問題に対して、OkHttpは自動的にアプリケーションの修復処理を行うことを黙認します。もしあなたのサーバーが複数のIPアドレスを持っているなら、OkHttpは要求に失敗した時、他のIPアドレスを接続しようと試みます。サーバが同時にIPv4IPv6をサポートしている場合、またはホストサーバがデータに障害がある場合には、非常に有用である。握手が失敗した場合、OkHttpは、TLS(SNI, ALPN)プロトコルを有する新しい接続を自動的に初期化し、TLS 1.0をサポートするサーバに要求を再起動する。
    OkHttpの使い方はとても簡単です。OkHttpの要求/応答のAppは建築者モードに設計され、不変性を持つ。これは、プライマリスレッド内で対応するクローズドを呼び出すこともできるし、サブスレッド内で対応する方法をリピートすることもできる。
    OkHttpはAndroid 2.3以上のバージョンに対応しています。Javaアプリケーションには、最小バージョンはJDK 1.7以上が必要です。
    ダウンロード
    okhttp-3.8.jarパッケージはリンクをダウンロードします。Jarパッケージをアプリケーションに導入することによって統合すると、OkioとOkHttpの統合が必要です。
    MAVEN
    
      com.squareup.okhttp3
      okhttp
      3.8.0
    
    
    GRADLE
    compile 'com.squareup.okhttp3:okhttp:3.8.0'
    
    模範的なタイプ
    Get方法でURLを要求します。
    下のコードは一つのURLを通じて一つのテキストをダウンロードし、テキストの内容を印刷します。
    public class GetExample {
      OkHttpClient client = new OkHttpClient();
    
      String run(String url) throws IOException {
        Request request = new Request.Builder()
            .url(url)
            .build();
    
        try (Response response = client.newCall(request).execute()) {
          return response.body().string();
        }
      }
    
      public static void main(String[] args) throws IOException {
        GetExample example = new GetExample();
        String response = example.run("https://raw.github.com/square/okhttp/master/README.md");
        System.out.println(response);
      }
    }
    
    Post方法でサーバにデータを転送する
    下記のコードはサーバにデータをアップロードする操作を示しています。
    public class PostExample {
      public static final MediaType JSON
          = MediaType.parse("application/json; charset=utf-8");
    
      OkHttpClient client = new OkHttpClient();
    
      String post(String url, String json) throws IOException {
        RequestBody body = RequestBody.create(JSON, json);
        Request request = new Request.Builder()
            .url(url)
            .post(body)
            .build();
        try (Response response = client.newCall(request).execute()) {
          return response.body().string();
        }
      }
    
      String bowlingJson(String player1, String player2) {
        return "{'winCondition':'HIGH_SCORE',"
            + "'name':'Bowling',"
            + "'round':4,"
            + "'lastSaved':1367702411696,"
            + "'dateStarted':1367702378785,"
            + "'players':["
            + "{'name':'" + player1 + "','history':[10,8,6,7,8],'color':-13388315,'total':39},"
            + "{'name':'" + player2 + "','history':[6,10,5,10,10],'color':-48060,'total':41}"
            + "]}";
      }
    
      public static void main(String[] args) throws IOException {
        PostExample example = new PostExample();
        String json = example.bowlingJson("Jesse", "Jake");
        String response = example.post("http://www.roundsapp.com/post", json);
        System.out.println(response);
      }
    }