0
Good morning guys, I’ve been in this problem for a few days... I know how to send an item from Sqlite to Webservice, but how do I send an entire table at once?
Scenario: The user makes a stock count and adds items, on the screen there is a button that searches all the items and sends them to the Webservice. The items are not added I think my JSON is wrong (missing a key at the beginning with the table name, I do not know how to do this).
JSON:
[{"IdAgendamento":"2","Filial":"1","CodigoProduto":"3","CodigoAlmox":"0","QuantidadeContada":"7","DataHoraContagem":"30-08-2019-17:53:07","SemAgendamento":"true"},{"IdAgendamento":"2","Filial":"1","CodigoProduto":"4","CodigoAlmox":"0","QuantidadeContada":"7","DataHoraContagem":"02-09-2019-10:34:02","SemAgendamento":"true"}]
On the PHP side I don’t know how to find the values of each item I’ve tried in several ways...
PHP code:
<?php
header('Content-Type: application/json; charset=utf-8');
$response["erro"] = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require_once('dbConnect.php');
$itens = $_POST;
mysqli_set_charset($con, "utf8");
print_r($itens);
foreach ($itens as $key => $value) {
$idAgendamento = $_POST["idAgendamento"];
$Filial = $_POST["filial"];
$CodigoProduto = $_POST["codigoProduto"];
$CodigoAlmox = $_POST["codigoAlmox"];
$Quantidade = $_POST["quantidadeContada"];
$DataHoraContagem = $_POST["dataHoraContagem"];
$SemAgendamento = $_POST["semAgendamento"];
$values[] = "('$idAgendamento', '$Filial', '$CodigoProduto', '$CodigoAlmox', '$Quantidade', '$DataHoraContagem', '$SemAgendamento')";
$sql = 'INSERT INTO tabela (idAgendamento, Filial, CodigoProduto, CodigoAlmox, Quantidade, DataHoraContagem, SemAgendamento)
VALUES '.implode(PHP_EOL.', ', $values);
}
if (mysqli_query($con, $sql))
{
echo "Sucesso";
} else {
echo "Erro ".$sql;
}
mysqli_close($con);
} else {
echo "Acesso Negado";
}
?>
onBackground of service:
try {
URL url = new URL(STRING_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
//String json = new Gson().toJson(jsonArrays);
PrintStream printStream = new PrintStream(connection.getOutputStream());
printStream.println(jsonArrays);
connection.connect();
connection.getResponseCode();
connection.getResponseMessage();
String jsonDeResposta;
if (connection.getResponseCode() == (HttpURLConnection.HTTP_OK)) {
jsonDeResposta = "sucesso";
} else {
jsonDeResposta = "falhou";
}
return jsonDeResposta;
NOTE: Using Postman and placing parameters (1 item) it adds 7 items, which is the number of columns in the table not the number of items. If I try to add by emulator it does not add any in the table.
@Edit: I redid Asynctask, it was not passing any value. public class Webclient extends Asynctask { Handler Handler = new Handler();
@Override
protected String doInBackground(JSONArray... jsonArrays) {
handler.post(new Runnable() {
@Override
public void run() {
MainActivity.progressBar.setVisibility(View.VISIBLE);
}
});
String json = new Gson().toJson(jsonArrays);
OkHttpClient client = new OkHttpClient();
//TODO Inserir site para envio do JSON da tabela "ProdutoQuantidade"
String url = "SERVER_URL";
//TODO Tentar utilizar:
//HttpURLConnection urlConnection = getConnection(url);
Request.Builder builder = new Request.Builder();
builder.url(url);
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, json);
builder.post(body);
Request request = builder.build();
try {
Response response = client.newCall(request).execute();
String jsonDeResposta = response.body().string();
return jsonDeResposta;
} catch (Exception e) {
e.printStackTrace();
return "falhou";
}
}
PHP:
<?php
header('Content-Type: application/json; charset=utf-8');
$response["erro"] = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require_once('dbConnect.php');
$itens = $_POST;
mysqli_set_charset($con, "utf8");
foreach ($itens as $key => $value) {
$idAgendamento = $_POST["idAgendamento"];
$Filial = $_POST["filial"];
$CodigoProduto = $_POST["codigoProduto"];
$CodigoAlmox = $_POST["codigoAlmox"];
$Quantidade = $_POST["quantidadeContada"];
$DataHoraContagem = $_POST["dataHoraContagem"];
$SemAgendamento = $_POST["semAgendamento"];
$values[] = "('$idAgendamento', '$Filial', '$CodigoProduto', '$CodigoAlmox', '$Quantidade', '$DataHoraContagem', '$SemAgendamento')";
$sql = 'INSERT INTO tabela (idAgendamento, Filial, CodigoProduto, CodigoAlmox, Quantidade, DataHoraContagem, SemAgendamento)
VALUES '.implode(PHP_EOL.', ', $values);
if (mysqli_query($con, $sql))
{
echo "Sucesso";
} else {
echo "Erro ".$sql;
}
}
mysqli_close($con);
} else {
echo "Acesso Negado";
}
?>
By Postman Adds Multiple Items