У меня есть код для выполнения POST-запросов с HttpsUrlConnection, код работает нормально, но у некоторых из моих пользователей есть SIM-карты с закрытой группой пользователей, и им нужно установить прокси в настройках своего apn. Если они устанавливают прокси, мне нужно изменить мой код. Я попробовал это:
HttpsURLConnection connection = null;
DataOutputStream outputStream = null;
DataInputStream inputStream = null;
String urlServer = "https://xxx";
String boundary = "*****";
try {
URL url = new URL(urlServer);
SocketAddress sa = new InetSocketAddress("[MY PROXY HOST]",[My PROXY PORT]);
Proxy mProxy = new Proxy(Proxy.Type.HTTP, sa);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;boundary=" + boundary);
//this is supposed to open the connection via proxy
//if i use url.openConnection() instead, the code works
connection = (HttpsURLConnection) url.openConnection(mProxy);
//the following line will fail
outputStream = new DataOutputStream(connection.getOutputStream());
// [...]
} catch (Exception ex) {
ret = ex.getMessage();
}
Теперь я получаю сообщение об ошибке:
javax.net.ssl.SSLException: соединение закрыто одноранговым узлом
Если я использую url.OpenConnection () без Proxy и без Proxysettings в apn, код работает, в чем может быть проблема?