Регистрация / Вход в аккаунт
Заказать рекламу на МирМастера.ру
Блог о рыбалки и снастях

Форум » Программирование » Язык Java » Начинающим » Отправить jsonObject post запросом из android и получить ответ

1. avatar CoMMoN Создатель [автор] (10.05.2017 в 09:03)
рабочий код! (может кому-то поможет)

на устройстве, в AsyncTask. формирование jsonObject из файла, отправка на php-сервер, получение ответа от сервера

class RequestTask extends AsyncTask<Void, Void, Void> {

//private BufferedOutputStream bos;
JSONObject jsonObj;

@Override
protected Void doInBackground(Void... params) {

Log.d("myLogs","doInBackground");
// Формируем jsonObject из файла
try {

File yourFile = new File(Environment.getExternalStorageDirectory(), "/MyFiles/fileSD1.txt");
FileInputStream stream = new FileInputStream(yourFile);
String jsonStr = null;
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

jsonStr = Charset.defaultCharset().decode(bb).toString();
}
finally {
stream.close();
}

jsonObj = new JSONObject(jsonStr);

Log.d("myLogs",jsonObj.toString());

// Отправка json, отправку делаем в AsyncTask


}
catch (Exception e) {
e.printStackTrace();
}

// Отправка данных
try {

String MY_SITE = "http://192.168.1.37/index.php"; // Пока тут адрес локального сервера
URL url =new URL(MY_SITE); // пример "http://ru.stackoverflow.com/"
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();

urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestMethod("POST");
urlConnection.setConnectTimeout(5000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);

Log.d("myLogs", "___" + jsonObj.toString());
BufferedOutputStream bos = new BufferedOutputStream(urlConnection.getOutputStream());
Log.d("myLogs", "qqq");
bos.write(jsonObj.toString().getBytes());
bos.flush();
bos.close();

Log.d("myLogs", "отправили данные");
if (urlConnection.getResponseCode()==HttpURLConnection.HTTP_OK) {
String result = urlConnection.getResponseMessage();
Log.d("myLogs", "server response: " + result); //проверить, что вернет сервер, сервер должен вернуть тестовую строку

BufferedReader reader = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream()));

StringBuffer sb = new StringBuffer(1024);
String tmp="";
while((tmp=reader.readLine())!=null)
sb.append(tmp).append("\n");
reader.close();

Log.d("myLogs",sb.toString());

}
else {
Log.d("myLogs","no");
}

} catch (Exception e) {
//System.out.println("Exp=" + e);
e.printStackTrace();

}

return null;
}

@Override
protected void onPostExecute(Void result) {

super.onPostExecute(result);
}

@Override
protected void onPreExecute() {

super.onPreExecute();
}
}
[/code]

php-сервер. прием данных, запись в файл, отправка ответа.

[code]
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = file_get_contents('php://input');

//Запись полученных данных в файл
$file = fopen ("file.txt","r+");
//$str = "Hello, world!";
if ( !$file )
{
echo("Ошибка открытия файла");
}
else
{
fputs ( $file, $data);
}
fclose ($file);

echo '{data:'.$data.'}';
}?>


Вы не авторизованы, чтобы добавить сообщение, необходимо!

© Development by MirMastera.Ru 2009 - 2018

Яндекс.Метрика
Главная Правила FAQ FPORTAL