2017-09-04 21 views
0

私は春のブート時にアプリケーションを開発していますが、セキュリティ上の目的で様々な形式でrecaptchaを統合する必要がありましたが、接続では常に接続がタイムアウトしてしまいました。それは通過し、答えを返しますが、Javaコードの時間がなくなり、エラーが発生します。java.net.ConnectException: Connection timed out: connect「Java OK HTTP」で提供されるポストマンコードを使用して、私が間違っていることがわかりません。コードは次のものです。Spring Boot Recaptcha Configuration

OkHttpClient client = new OkHttpClient(); 

Request request = new Request.Builder() 
.url("https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX") 
.get() 
.addHeader("cache-control", "no-cache") 
.addHeader("postman-token", "f47548e1-a9e0-9065-7f76-dced294bddcb") 
.build(); 

Response response = client.newCall(request).execute(); 

しかし、どこにエラーが発生していないようですが、誰かが私を助けることができますか?

答えて

1

あなたはConnection timed outエラーを持っているので、我々はそれを言うことができます。

  • これはUnknown hostエラーではないので、あなたはwww.google.com
  • のIPv4またはIPv6アドレスを与えるDNSを持っている必要があります
  • これはdestination unreachableエラーではないため、ゲートウェイへのルートがあり、このゲートウェイはデフォルトルートを持つローカルルーターです。

したがって、connectのタイムアウトは、あなたが先にTCP SYNパケットを送信してきたし、このパケットがファイアウォールのどこかで、あなたのローカルネットワーク内またはネットワークとインターネットとの間の界面で、削除されたことを意味(ICMP/ICMPv6パケットが何も受信されていないため、何か間違っていると言われています。標準のルータがそのような情報を送ってきたはずです)。

問題は最初のパケット(TCP SYN)にあります。問題は、ソースコードのaddHeader()呼び出しとの相対的なものではありません。あなたのケースでは、これらのヘッダーは決してこのエラーで送信されません。 www.google.frは、IPv4アドレスとIPv6アドレスを持っているので

は、二つの可能性があります。

  • どちらかあなたはRAのadvertismentsを送信しますが、IPv6でインターネットに接続されていないローカルIPv6ルーターを持っています。このケースを確認するために、これを試してみてください :

を置き換える:

https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX 

によって:

https://[2a00:1450:400c:c04::6a]/recaptcha/api/siteverify?secret=XX&response=XXX 

あなたがtimeoutを取得し続けた場合、これはあなたがひどくているIPv6ルーターを持っていることを意味します設定されます。

  • またはファイアウォールを持っていると置き換えるプロキシ

を使用する必要があります。

https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX 

をによって:

https://74.125.206.104/recaptcha/api/siteverify?secret=XX&response=XXX 

あなたがタイムアウトを取得し続ける場合は、このファイアウォールがあることを意味し、プロキシを使用する必要があります。

+0

実際に私は最後のconfでタイムアウトを得ましたが、最初のものでは到達できませんでした。どのようにプロキシを使用することが可能ですか? – Zenoheld

+0

あなたは最後のconfでタイムアウトしており、最初のものでは到達不能なので、正しいです。プロキシを使用する必要があります。あなたは確かに認証(最も一般的なケース)とプロキシを使用する必要があります。だから、これを読んで:https://stackoverflow.com/questions/35554380/okhttpclient-proxy-authentication-how-to –

+1

最後にそれは動作しませんでしたが、私の他のマシンで働いていた、プロキシは私は仮想マシンの内部で作業しているので、お尻、問題は設定が必要でした、ありがとうございます。 – Zenoheld

関連する問題