У меня возникла проблема, когда я пытался отправить данные через приложение на сервер.Android для Php-сервера с методом POST и httpurlconnection
Данные отправляются успешно с URL-адреса браузера ноутбука и браузера Url из эмулятора, только из-за того, что данные не могут отправляться с помощью приложения, я не могу понять, почему? Любая помощь, пожалуйста ...
class Connection extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
// JSONArray array = new JSONArray();
JSONObject json = new JSONObject();
try {
URL url = new URL("http://10.0.3.2/FixItApp/insert_user.php?username="+getUserName +"&password="+getPassword+"&store="+getStoreName+"&address="+getAddress+"&city="+getCity);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
urlConnection.setRequestProperty("Host", "android.schoolportal.gr");
urlConnection.connect();
//setup send
OutputStream outputStream = urlConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
bufferedWriter.write(url.toString());
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(urlConnection != null)
{
urlConnection.disconnect();
}
}
return null;
}
И мой файл РНР как этот
<?php
/* */
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "not set";
if(isset($_REQUEST)){
$txt = serialize($_REQUEST);
}
fwrite($myfile, $txt);
fclose($myfile);
/* */
require_once "DatabaseConnection.php";
$result = null;
if ($_GET) {
// User table attribute
$name = filter_input(INPUT_GET, "username", FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_GET, "password", FILTER_SANITIZE_STRING);
$address = filter_input(INPUT_GET, "address", FILTER_SANITIZE_STRING);
$store = filter_input(INPUT_GET, "store", FILTER_SANITIZE_STRING);
$city = filter_input(INPUT_GET, "city", FILTER_SANITIZE_STRING);
if(is_null($store) || is_null($name) || is_null($password)){
// do nothing
}
else{
$select_ExistUser = @"SELECT username from users WHERE username = '$name'";
$resultUser = selectQuery($select_ExistUser);
if(count($resultUser)==0)
{
$query_one = "INSERT INTO users(username, password, store_name, address, city)
VALUES('$name','$password', '$store','$address','$city')";
$result = insertQuery($query_one);
$insert_id = $db->insert_id;
if($insert_id){
}
}
else
{
//nothing
}
}
}
if ($result) {
$arr= [
"result" => $insert_id,
"status_message" => "OK",
"status_code" => 1
];
} else {
$arr = [
"result" => $result,
"status_message" => "RECORD EXIST",
"status_code" => -1
];
}
echo json_encode($arr);
Здесь я звоню класс Коммутация
new Connection().execute();
Является ли ваше устройство и сервер в одной сети? Я имею в виду, что ваш URL-адрес: http: // localhost/.... Можете ли вы получить доступ к этому URL-адресу, используя браузер вашего Android-устройства? Сообщение об ошибке сообщает, что устройство не может подключиться к localhost. Если вы не в той же сети, то размещайте свой сервер на каком-то свободном хосте в Интернете, а затем повторите попытку. –
Да, но не удается получить доступ к URL-адресу с помощью Emulator Browser –
смена localhost на 10.0.3.2 Я могу получить доступ к URL-адресу из браузера эмулятора ... но все еще не получаю данные на стороне сервера –