#android #android-studio #http #https
#Android #android-studio #http #https
Вопрос:
Я работал над простым классом с единственной задачей отправить строку из моего приложения в веб-сервис. HTTP Get работает просто отлично, однако Post не
Я использую этот код и не получаю никаких сообщений об ошибках, тем не менее он не работает. Есть какие-нибудь подсказки, почему?
public class HTTPPostTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
ECRDataFile ecrDataFile = new ECRDataFile();
HttpURLConnection urlConnection = null;
CryptoProvider cryptoProvider = new CryptoProvider();
OutputStream out = null;
try {
JsonObject postData = new JsonObject();
postData.addProperty("id", 123);
postData.addProperty("encryptionKey", 321);
postData.addProperty("data", "Lewis' mom is fat");
URL url = new URL("http://10.0.2.2:44378/api/values");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
out = new BufferedOutputStream(urlConnection.getOutputStream());
Log.d("doInBackground Post", "doInBackground pos2");
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
Log.d("doInBackground Post", "doInBackground pos3");
writer.write(postData.toString());
writer.flush();
writer.close();
out.close();
urlConnection.connect();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
return null;
}
Комментарии:
1.
urlConnection.connect();
Это слишком поздно. Вы уже написали / опубликовали свое сообщение.2. Вы должны использовать inputstream для чтения сообщения, которое сервер отправляет обратно. И проверьте код результата.
3. Спасибо, но не могли бы вы помочь мне с кодом, пожалуйста?
4. То, что вы хотите, довольно стандартно, и код много раз публиковался в stackoverflow. Так что немного поищите. Кроме того, вы отправляете не только строку, но и текст в формате json, и ваш сервер должен это принять.