Сегодня я делаю первую попытку отправки запроса POST с помощью JSON для сохранения некоторых данных, и я не могу этого сделать. Мое приложение работает, выполнив вход, а затем сохраните, измените и удалите данные. Это уже сделано в iOS, но поскольку я новичок в Android, я не уверен, как это сделать. Вот моя POST функция:Не удалось POST для REST API
public String POST(String targetURL, String urlParameters, String user, String pwd) {
URL url;
String u = targetURL;
HttpURLConnection connection = null;
try {
// Create connection
// u=URLEncoder.encode(u, "UTF-8");
url = new URL(u);
connection = (HttpURLConnection) url.openConnection();
// cambiarlo luego al usuario q esta logeado
String login = user + ":" + pwd;
String encoding = new String(org.apache.commons.codec.binary.Base64.encodeBase64(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(login)));
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.setRequestProperty("Content-Type", "plain/text");// hace q sirva con el string de json
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setReadTimeout(120000);
// Send request
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
this.setResponseCode(connection.getResponseCode());
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
Описанный выше метод выполняется с AsyncTask, и даже если я использую его для входа с использованием Spring безопасности, она работает, и даже я могу сохранить для внутреннего использования имя пользователя, пароль и секретный токен. Я не знаю, если мне нужно поставить токен в заголовок или что-то в этом роде, потому что я уже сделал это, без положительных результатов. Я предполагаю, что единственное разрешение, которое мне нужно выполнить, - это интернет, поэтому в моем файле манифеста я указал это разрешение. Я с ума схожу с этой проблемой, пожалуйста, помогите! Спасибо заранее.
EDIT:
Извините, ребята, я своего рода новым для этого способа просить, а также, не НОСИТЕЛЕМ английский: P Выход я получаю после отправки запроса, является HTML из страница, которая обрабатывает входа в систему в веб-приложение ... Мне нужно как ответ JSON или что-то подобное, чтобы убедиться, что запрос был сохранен правильно
Не могли бы вы объяснить более подробно проблему? Какая ошибка вы получаете? прочитайте: http://stackoverflow.com/help/how-to-ask –
String urlParameters. Мы не знаем контент, который вы собираетесь написать в выходной поток. Он должен быть специально отформатирован. Покажите, пожалуйста. – greenapps
Вы можете попробовать включить ведение журнала на сервере и посмотреть, где остановится обработка. т. е. это плохой запрос или что-то еще? – Droidekas