HTTPS аутентификация с параметрами - PullRequest
0 голосов
/ 08 февраля 2019

Я использую HttpsURLConnection для подключения к приложению.Все хорошо, пока я не пытаюсь использовать параметры (например, имя пользователя и пароль) в запросе из-за того, что на стороне сервера нулевые значения сопоставляются с параметрами.

     HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();

         connection.addRequestProperty("password", "xxxx");
         connection.addRequestProperty("username", "aaaaaa");
         connection.addRequestProperty("eventId","btnLogin");

         connection.setRequestMethod("POST"); //$NON-NLS-1$
         connection.setDoOutput(true);
         connection.setDoInput(true);
         connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
         connection.setRequestProperty( "Accept", "*/*" );



         BufferedReader in = new BufferedReader(
                 new InputStreamReader(
                 connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}

Я упоминаю, что HttpsURLConnection работает иначальная страница входа в систему восстановлена ​​через HttpsUrlConnection.

Как я мог успешно отправить параметры на стороне сервера через запрос POST.

С уважением,

1 Ответ

0 голосов
/ 13 февраля 2019

Я приказываю решить проблему. Я создал ссылку Map на объект HashMap, в котором я сохранил в ключах параметры и в значениях значения для этих параметров.

После этого я создал метод, который будет возвращать объект String, содержащий закодированные параметры, которые будут использоваться для запроса POST.

private String getOutput(Map<String, String> hm) throws UnsupportedEncodingException {

       String out = "";
       boolean start = true;

       for(Map.Entry<String, String> h : hm.entrySet()){
           if(start){

               start=false;
               out+=URLEncoder.encode(h.getKey(),  "UTF-8");
               out+="=";
               out+=URLEncoder.encode(h.getValue(), "UTF-8");
           }


           else{
               out += "&";
               out+=URLEncoder.encode(h.getKey(),  "UTF-8");
               out+="=";
               out+=URLEncoder.encode(h.getValue(), "UTF-8");
           }

       }

Все вышеперечисленное использовалось в выходном потокечтобы отправить их на сервер.

  out = new BufferedWriter(
                  new OutputStreamWriter(connection.getOutputStream())
                  );
          out.write(getOutput(hm));

          out.close();
...