package inc.daniilsud.database2;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Button;
import android.widget.Toast;
import org.json.JSONObject;
import org.json.JSONStringer;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Formatter;
import javax.net.ssl.HttpsURLConnection;
public class SelectActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select);
final Button btnQuery = (Button) findViewById(R.id.btnQuery);
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
final EditText etParameter = (EditText) findViewById(R.id.editText);
btnQuery.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!isOnline()) {
Toast.makeText(getApplicationContext(),
"Нет соединения с интернетом!", Toast.LENGTH_LONG).show();
return;
}
RegConnection conn = new RegConnection();
conn.execute(etParameter.getText().toString(), Integer.toString(spinner.getSelectedItemPosition()));
}
});
}
private class RegConnection extends AsyncTask<String, Void, String> {
HttpsURLConnection urlConnection = null;
@Override
protected String doInBackground(String... params) {
try {
URL url = new URL("https://r-rp.su/php/android.php");
urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
//urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setUseCaches(false);
//urlConnection.setRequestProperty("spinneritem", params[1]);
//urlConnection.setRequestProperty("value", params[0]);
urlConnection.setDoOutput(true);
urlConnection.setDoOutput(false);
urlConnection.setConnectTimeout(15000);
JSONObject data = new JSONObject();
data.put("spinneritem", params[1]);
data.put("value", params[0]);
// byte[] data = ("spinneritem="+params[1]+"&value="+params[0]).getBytes();
OutputStream os = urlConnection.getOutputStream();
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(data.toString().getBytes());
bos.flush();
bos.close();
os.close();
urlConnection.connect();
//urlConnection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
public boolean isOnline() {
String cs = Context.CONNECTIVITY_SERVICE;
ConnectivityManager cm = (ConnectivityManager)
getSystemService(cs);
if (cm.getActiveNetworkInfo() == null) {
return false;
} else {
return true;
}
}
}
Так выглядит мой текущий код. Суть в том, что при отладке не происходит ошибок, а PHP файл должен принимать корректно.
<?php
try {
file_put_contents('1',"1");
$unput_json = json_decode(file_get_contents('php://input'), TRUE);
$spinneritem = $input_json['sninneritem'];
$value = $input_json['value'];
echo 1;
$query = "";
file_put_contents('android.txt', $spinneritem." - item ".$value." - value\n", LOCK_EX | FILE_APPEND);
switch($spinneritem)
{
case 0:
$query = "SELECT FLIGHTS.NUM, FLIGHTS.START_TIME, FLIGHTS.AIRPORT_TARGET FROM FLIGHTS
INNER JOIN startings ON startings.flight_num=flights.num
INNER JOIN PLANES ON startings.plane_code=PLANES.PLANE_CODE
WHERE PLANES.TYPE=?";
break;
}
try {
$dbh = new PDO();
$stmt = $dbh->prepare($query);
$stmt->execute($value);
$res = $stmt->fetchAll(PDO::FETCH_BOTH);
$ret = json_encode($res);
file_put_contents('android.txt', $ret." - returned value \n", LOCK_EX | FILE_APPEND);
echo $res;
$dbh = null;
} catch (PDOException $e) {
echo "Error!: " . $e->getMessage() . "<br/>";
file_put_contents('android.txt', $e->getMessage()." - exception \n", LOCK_EX | FILE_APPEND);
die();
}
}
catch(Exception $e) {
file_put_contents('android.txt', $e->getMessage()." - exception \n", LOCK_EX | FILE_APPEND);
}
?>
Вопрос следующий - по идее PHP интерпретируемый язык, поэтому он должен выполнить создание файлов (все file_put_contents нужны для проверки). Не создается ничего. Может ли быть такое, что при создании буфера и вброса его в поток php не обрабатывается как обычно и срабатывает как "API" только по БД/echo части? Иначе не знаю как объяснить ошибку
Сборка персонального компьютера от Artline: умный выбор для современных пользователей