BasicNameValuePair: как вставить несколько значений? - PullRequest
0 голосов
/ 29 октября 2019

Я хочу войти через POST-HTTP-запрос на веб-сайт, используя Apache HTTP Client. Для входа в систему требуется следующая информация (извлеченная из информации о сети Chrome после успешного входа в систему вручную):

autoLogin: false
credentials: {email: "youremail@whatever.de", password: "yourpassword"}
kid: ""
language: "de"

Таким образом, требуется 4 параметра. Однако следующий код работает, но вход в систему не выполняется (неверный запрос):

HttpPost httpPost = new HttpPost("the url for the api where the POST Request belongs");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("autoLogin", "false"));
params.add(new BasicNameValuePair("email", "emailadress@whatever.de"));
params.add(new BasicNameValuePair("password", "yourpassword"));
params.add(new BasicNameValuePair("kid", ""));
params.add(new BasicNameValuePair("language", "de"));
httpPost.setEntity(new UrlEncodedFormEntity(params));
future = httpclient.execute(httpPost,localContext,null);
HttpResponse response = future.get();
System.out.println("Response: " + response.getStatusLine());

это не работает, поскольку электронная почта и pw должны быть в массиве. Тем не менее, я борюсь с синтаксисом. если я обмениваюсь двумя строками электронной почты и pw со следующим, это также не работает:

 params.add(new BasicNameValuePair("credentials", "{email: 'emailadress@whatever.de', password: 'yourpassword'}"));

Я очень полагаю, что это просто ошибка синтаксиса в строке с параметром credentials. Кто-нибудь знает, как это сделать правильно? Редактировать: Добавление 'также не работает:

params.add(new BasicNameValuePair("credentials", "{'email': 'emailadress@whatever.de', 'password': 'yourpassword'}"));
...