問題タブ [okhttp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - OkHttp 2.0 で次のリダイレクトを無効にすることは可能ですか?
Android では、新しい OkHttp 2.0 を使用していくつかの URL をリクエストしたいと考えていますが、リダイレクトをより細かく制御したいと考えています。次の HTTPS → HTTP または HTTP → HTTPS リダイレクトを有効または無効にするオプションを既に見つけましたが、リダイレクトをたどりたくないので、できるだけ早く GUI を更新し、それらに従うかどうかを次から選択できます。アプリケーションロジック。これを行うオプションが表示されません。可能であれば、どうすればこれを達成できますか?
android - OkHttp + Retrofit libssl が双方向 SSL 認証でクラッシュする
OkHttp: 2.0.0-RC1、レトロフィット: 1.5.1。
ここで述べたように、okHttp クライアントを作成しています: NoSuchMethodError if i am using okhttp 2.0 and the latest retrofit? そして自分自身を設定し、このようSSLScoketFactory
に初期化しますSSLContext
双方向認証SSL接続を確立しようとすると、アプリがクラッシュするたびに次のログが表示されます:
ここでこの問題に関する議論を見てきました: https://github.com/square/okhttp/issues/184ですが、2.0.0 で修正されたと思いました。(さらに、デフォルトの SSL コンテキストではなく、独自の SSL コンテキストを使用しています)。
(OkHttp 1.6.0)を試しましURL.setURLStreamHandlerFactory(new OkHttpClient());
たが、どちらも役に立ちませんでした。
また、私はこれを読みました: https://code.google.com/p/android/issues/detail?id=35326、しかし有用な情報はありません。
私は何か間違ったことをしていますか、それとも OkHttp にまだ問題がありSSLContext
ますか?
@編集
HTC ONE S (S4) 4.1.1 株式
@編集2
本当に okHttp の障害かどうかはわかりません。キーストアの作成方法 (またはキーストアへのキーの追加) に問題があります。現時点では、トラストストアは .bks ファイルとして res/raw にあり、キーストアは実行時に動的に作成されています。
キーストアへのキーの保存:
しかし、Android アプリケーションの外部でキーストアを作成し、openssl ツールを使用して pkcs12 キーストアに保存すると、すべて正常に機能しました。
@edit3
Android 4.1.2 + okHttp ではクラッシュしません (上記のリンクの code.google[...] の説明を参照) が、キーの値が一致しないという次のエラーが表示されます
@edit4
わかりました、今私は何が間違っていたかを知っています。キーをキーストアに保存するために ma 証明書チェーンを作成する際に、rootCA (証明書の署名に使用されたもの) を使用する必要はありません。現在、Certificate
アレイ チェーンは 1 つの証明書のみで構成されています。
上記のコードは機能しています。悪い行をすべて変更しました。
ただし、okHttp がクラッシュした理由はまだわかりません。
@edit5
キー/証明書キーストアに問題がある場合、エラーはスローされず、コンテンツを保存できます。ただし、キーストアのエントリが正しくない場合、okHttp はクラッシュします。
android - Square OKHTTP で証明書を固定するにはどうすればよいですか?
新しい SSL Socket Factory を作成する必要があると思いますか? また、明らかな理由から、グローバル SSL コンテキスト ( https://github.com/square/okhttp/issues/184 )を使用したくありません。
ありがとう!
編集:
okhttp 2.1.0 以降では、証明書を非常に簡単にピン留めできます。
開始するには、こちらのソースコードを参照してください
android - HTTP Post はデフォルトの HttpClient でのみ機能し、OkHttpClient では機能しません
私は、 http://sagecell.sagemath.org/kernel (投稿のみ、データなし) に投稿要求を送信する必要があるプロジェクトに取り組んでいます。 .
次のようにデフォルトの httpClient を使用すると、これは正常に機能します。
ただし、OkHttpClient を使用して同じものを使用したい場合は、403 エラーが発生します。
これは、Ion や HttpUrlConnection などのライブラリでも同じで、Apache クライアントだけが機能しているようです。
これが機能しない理由についての回答をいただければ幸いです。
java - okhttpでHTTP接続を閉じるには?
リクエストが終了した後、HTTP サーバーへの接続を閉じる必要があることを OkHttp に伝えるにはどうすればよいでしょうか?
次のコードを使用して google.com にリクエストを送信するとします。
"Connection: close" を使用して、リモート サーバーに FIN を送信させることができます (そうしないと、リモート サーバーは新しい要求を待ってハングします)。それでも、クライアント側では FIN は生成されず、接続は明らかに不確定な時間半分開いたままになります。
android - Picasso は、クラスパスでサポートされていない OkHttp を検出しました
Picasso 2.3.2 と okhttp 1.5.4 を使用しています
最初に私はこのRTEを取得していました:
次に、com.squareup.okhttp:okhttp:1.6.0 (mvn クリーン インストールを実行し、IntelliJ で maven を再インポート) で pom を更新しましたが、クラッシュは引き続き発生します。
誰でもこれを修正する方法を知っていますか?
android - OkHTTP と Picasso は一緒に実行されません
プロジェクトで Picasso ライブラリを使用して、画像を読み込み、キャッシュします。問題なく動作良好です。しかし、OkHttp ライブラリを使用してサーバーとのデータ通信 (JSON 通信) を実行しようとすると、Picasso が例外をスローします。
次の jar を使用します: okhttp-2.0.0-RC2、okio-1.0.0、picasso-2.2.0。これらの jar を追加した後にプロジェクトを実行すると、次のようにクラッシュします。
次の方法を使用するためだけにokhttpを追加しました:
上記のコードは問題なく動作します。ただし、Picasso ライブラリを使用し、以前は完全に機能していたコードは、次の例外をスローし始めます。
私のクラスパス:
okhttp-2.0.0-RC2、okio-1.0.0 を削除すると、Picasso の行が機能します。
なぜそれが起こっているのですか?2 つのライブラリを一緒に使用するにはどうすればよいですか?
java - okhttpとspdyで「java.io.IOException:ストリームがリセットされました:CANCEL」の原因は何ですか?
私は OKHttp (バージョン 2.0.0-RC2) と SPDY をIOException: stream was reset: CANCEL
試しており、いくつかの予備テストでかなり多くのリクエストを確認しています。おそらく全リクエストの 10% 以上です。Apache HttpClient と通常の https を使用する場合、私が知る限り、同等の問題は見られませんでした。SPDY が無効になっている場合 ( ) には、OkHttp と同等のものも見られないことは確かですclient.setProtocols(ImmutableList.of(Protocol.HTTP_1_1))
が、100% 信頼できるほど十分なテストを行っていません。
この前の質問では、特にこれらの例外が見られ、それらを無視するようにというアドバイスがありますが、これはおかしなことのように思えます: サーバーからデータを読み取っているときに例外が発生するため、データ処理コード (Jackson を使用) を中止します。そのような場合、私たちは何かをする必要があります。もちろん、リクエストを再試行することもできますが、再試行できない POST リクエストである場合もあります。サーバーからのデータの受信を既に開始している場合は、サーバーが要求されたアクションを既に実行している可能性があります。
理想的には、これらの例外の発生を減らすために実行できるクライアントおよび/またはサーバーの構成がいくつかありますが、私は SPDY をよく理解していないため、どこから始めればよいか、またはサーバー管理者にアドバイスすることができません。チームが探し始めます。
役立つ場合のスタック トレース: