Отправка данных через JSON из Android в веб-сервис PHP с использованием HttpUrlConnection

В настоящее время я разрабатываю приложение для Android для небольшого проекта, который заключается в обучении разработке на платформе Android. Я уже сделал все приложение, и теперь мне нужно отправить данные из приложения на сервер на PHP с базой данных MySQL. У меня есть веб-сервис, чтобы сделать вставку в базу данных из данных, отправленных в формате JSON. Я протестировал веб-сервис с помощью Advanced Rest Client, и мне удалось вставить данные в мою базу данных. Сейчас я тестирую из приложения для Android, но оно не работает. Я проверил состояние соединения, и оно «ОК», но при проверке базы данных вставка отсутствует.

Ниже мой веб-сервис на PHP:

<?php

$json = file_get_contents('php://input');
$obj = json_decode($json);
$con = mysql_connect('host','login','password')
or die('Cannot connect to the DB');
mysql_select_db('database_name',$con);
mysql_query("INSERT INTO `commercial` (firstName, surNameC, email, number, salonName, uuid)
VALUES ('".$obj->{'firstname'}."','".$obj->{'name'}."','".$obj->  {'email'}."','".$obj->{'phonenumber'}."','".$obj->{'fairreference'}."','".$obj-> {'commercialuuid'}."')");
mysql_close($con);

$posts = "INSERTION OK";
header('Content-type: application/json');
echo json_encode(array('posts'=>$posts));

?>

И процесс отправки со стороны андроида:

    URL url;
HttpURLConnection urlConnection;
StringBuilder strBuilder;
try {
url = new URL(URL);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setUseCaches(false);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.connect();

JSONObject jsonObject = new JSONObject();
jsonObject.put("commercialuuid", args[0]);
jsonObject.put("name", args[1]);
jsonObject.put("firstname", args[2]);
jsonObject.put("phonenumber", args[3]);
jsonObject.put("email", args[4]);
jsonObject.put("fairreference", args[5]);

Log.d("json", jsonObject.toString());
Log.d("request", "starting");

OutputStreamWriter writer = new   OutputStreamWriter(urlConnection.getOutputStream());
writer.write(jsonObject.toString());
writer.flush();

Log.e("connection status",urlConnection.getResponseMessage());

//get the response from the web service
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
strBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
strBuilder.append(line);
}
writer.close();
reader.close();
urlConnection.disconnect();
return null;

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

Поскольку я искал несколько потоков, которые были проверены и основали свою работу на этом, я действительно не понимаю, почему это не работает.
Буду благодарен, если кто-нибудь сможет мне помочь.

Благодарю.

3

Решение

—> Обновление:
Как говорится в комментариях, этот ответ устарел, и ваш единственный выбор — использовать модификацию lib, сейчас я использую ее без проблем. поищите его, и я рекомендую использовать Retrofit2 вместо старого. ||

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

вставить его в поток или асинхронную задачу

List<NameValuePair> querypair=new ArrayList<NameValuePair>(1);
DefaultHttpClient httpClient = new DefaultHttpClient();;
querypair.add(new BasicNameValuePair("id", id));
querypair.add(new BasicNameValuePair("name", name));
querypair.add(new BasicNameValuePair("email", email));
HttpPost httpGetquery =new HttpPost("http://www.youradddres/insert.php");
httpGetquery.setEntity(new UrlEncodedFormEntity(querypair));
HttpResponse httpResponseGetQuery = httpClient.execute(httpGetquery);
httpEntityQueryGet = httpResponseGetQuery.getEntity();
Log.i("Entity",httpEntityQueryGet.toString());

также загрузить этот php

<?php
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "dbname";

$con=mysql_connect("localhost","$username","$password");
mysql_select_db("$dbname", $con);

$id=$_POST['id'];
$name=$_POST['name'];
$email=$_POST['email'];

mysql_query("INSERT INTO table(id, name, email)
VALUES ('$id', '$name', '$email')");

echo "New record created successfully";

?>

Надеюсь, поможет

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]