は、同じサーバーに2つのネストされたボレー要求を使用していますが、もう一つはエラーで返されます:AndroidのバレーボールSSLエラー
StringRequest strReqUpdate = new StringRequest(Request.Method.GET, versionCheckURL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
initJson = response;
try {
JSONObject root = new JSONObject(initJson);
final long version = root.getLong("latest_update");
long localVersion = prefs.getLong("version", 0);
boolean flag = false;
if(version != localVersion){
flag = true;
}
if(flag == true){
StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
SharedPreferences.Editor editor = prefs.edit();
editor.putString("json", response);
editor.putLong("version", version);
editor.commit();
parseData(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String cachedResponse = prefs.getString("json", "");
if (!cachedResponse.equals("")) {
parseData(cachedResponse);
} else {
Toast.makeText(MainActivity.this, getString(R.string.network_error), Toast.LENGTH_LONG).show();
finish();
}
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("key", getResources().getString(R.string.api_key));
return headers;
}
};
strReq.setShouldCache(false);
AppController.getInstance().addToRequestQueue(strReq, Constants.TAG_STRING_REQ);
}
else{
String cachedResponse = prefs.getString("json", "");
if (!cachedResponse.equals("")) {
parseData(cachedResponse);
} else {
Toast.makeText(MainActivity.this, getString(R.string.network_error), Toast.LENGTH_LONG).show();
finish();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String cachedResponse = prefs.getString("json", "");
if (!cachedResponse.equals("")) {
parseData(cachedResponse);
} else {
Toast.makeText(MainActivity.this, getString(R.string.network_error), Toast.LENGTH_LONG).show();
finish();
}
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("key",getResources().getString(R.string.api_key));
return headers;
}
};
strReqUpdate.setShouldCache(false);
AppController.getInstance().addToRequestQueue(strReqUpdate, Constants.TAG_STRING_REQ);
私のJSONへの更新があるかどうかを確認するために要求を行っているものをここでやっていますそれをフェッチするリクエストが開始された場合(キャッシュされていないJSONがある場合)両方のリクエストは、sslを使用するherokuサーバにありますが、2回目のリクエストでのみエラーが発生します。私はsslエラーを起こしていると思う、私はさらに様々なポストから見られるようにsslの握手をオーバーライトしようとしたが、何も動作しません。孤立
2番目のリクエストは、次のとおりです。ログに取得しています何
StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
SharedPreferences.Editor editor = prefs.edit();
editor.putString("json", response);
editor.putLong("version", version);
editor.commit();
parseData(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String cachedResponse = prefs.getString("json", "");
if (!cachedResponse.equals("")) {
parseData(cachedResponse);
} else {
Toast.makeText(MainActivity.this, getString(R.string.network_error), Toast.LENGTH_LONG).show();
finish();
}
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("key", getResources().getString(R.string.api_key));
return headers;
}
};
strReq.setShouldCache(false);
AppController.getInstance().addToRequestQueue(strReq, Constants.TAG_STRING_REQ);
:解決しよう
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x61ff28f0: Failure in SSL library, usually a protocol error error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:744 0x5df0b6fd:0x00000000)
??? [同時に2つのSSL接続を行うことはできません](http://security.stackexchange.com/questions/46988/is-it-technically-possible-to-configure-two-different-ssl-certificates-for- the-s)。再度接続を解除して接続することも、2つの要求で1つのSSL接続を使用することもできますが、[この問題](http://serverfault.com/questions/566426/does-each-subdomain-need-its-own -ssl-certificate)。 –
同時に2つのSSL接続を作成していません。第2のSSL接続は、最初のonResponseで開始します。 –