1
I’m studying webservices but came across a problem, The API works because I can already enter data into the database, I’m using wamp, but in the app, I followed several steps and just don’t send, always error when sending, but don’t point errors through the ide. I’m looking but I haven’t found a solution yet.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//objeto view
View vista= inflater.inflate(R.layout.fragment_registrar_curso_fragmento, container, false);
campoCodigo = vista.findViewById(R.id.campoCodigo);
campoNome = vista.findViewById(R.id.campoNome);
campoCategoria = vista.findViewById(R.id.campoCategoria);
campoProfessor = vista.findViewById(R.id.campoProfessor);
botaoRegistrar = vista.findViewById(R.id.btnRegistrar);
//Utilizando via volly o método request
//Intância um objeto request que vai receber requisoções tipo volley
request = Volley.newRequestQueue(getContext());
botaoRegistrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
carregarWEBService();
}
});
return vista;
}
private void carregarWEBService(){
//barra de progresso
progresso = new ProgressDialog(getContext());
progresso.setMessage("Carregando...");
progresso.show();
String ipPC = "192.168.2.162";//para testes e uso do servidor local
//String para armazenar a url do banco com suas determinadas variaveis capturadas dos RditsTextes
String url = "http://192.168.2.162/webservices/registro.php?codigo="+campoCodigo.getText().toString()+
"&nome="+campoNome.getText().toString()+"&categoria="+campoCategoria.getText().toString()+
"&professor="+campoProfessor.getText().toString()+"";
//Retira os espaços da url com método replace
url = url.replace(" ","%20");//@param 1 campo que quer "substituir" @param2 "substituto" %20 que seria sem espaço
//Ler e processar url com JsonObjectRequest
jsonObjectReq = new JsonObjectRequest(Request.Method.GET, url,null,this,this);
request.add(jsonObjectReq);
}
Here are the methods in case of error or in case of success, in case always runs the Toast error
//em caso de erro do request
@Override
public void onErrorResponse(VolleyError error) {
//caso ocorra erro dispensaremos o progress
progresso.hide();
Toast.makeText(getContext(),"Não foi possivel conectar ao servidor",Toast.LENGTH_SHORT).show();
}
//sucesoo do resquest
@Override
public void onResponse(JSONObject response) {
progresso.hide();//se er certo vai esconder seu objeto
Toast.makeText(getContext(),"Cadastrado com sucesso",Toast.LENGTH_SHORT).show();
campoCodigo.setText("");
campoNome.setText("");
campoCategoria.setText("");
campoProfessor.setText("");
}
And here is the.php record
<?php
include "conexao.php";
$json = array();
//<!-- condição se os dados foram enviados ou não-->
if (isset($_GET["codigo"]) && isset($_GET["nome"]) && isset($_GET["categoria"]) && isset($_GET["professor"])) {
// <!-- recebendo dados via get
// *Método $_GET recebe via formulario no caso os edit texts do android
// -->
$codigo = $_GET["codigo"];
$nome = $_GET["nome"];
$categoria = $_GET["categoria"];
$professor = $_GET["professor"];
//Variavel que armazena aquery de upload
$inserir = "INSERT INTO curso (codigo,nome,categoria,professor) VALUES ('{$codigo}','{$nome}','{$categoria}','{$professor}')";
// Variavel pra executar essa query que guarda a funçao mmysqli_query que é responsavel por executar as querys
$resultado_inserir = mysqli_query($conexao,$inserir); //@param1 a conexao @param2 a query que sera exexutada no caso a de inserir
//verifica se a query foi mesmo executada e os dados inseridos no banco
if ($resultado_inserir) {
//Recuperando dados
$consulta = "SELECT * FROM curso WHERE codigo = '{$codigo}'";
//Executa a query de consulta
$resultado = mysqli_query($conexao,$consulta);
if ($registro = mysqli_fetch_array($resultado)) {// verifica se deu certo uma consulta (select) deve ser feita atraves da função mysql_fatch_array e armazena o numero de ocorrencias em registro (o correto é um pelo código ser unico)
//Array jason carrega todos os registros que ele trouxer da consulta retornando objeto
$json['curso'][] = $registro;
}//Fecha a conexao
mysqli_close($conexao);
echo json_encode($json);//mostra o array json caso a consulta tenha sido bem sucedida
}else {//erro ao registrar
$result["codigo"] = 0;
$result["nome"] = 'Não registrado';
$result["categoria"] = 'Não registrado';
$result["professor"]= 'Não registrado';
$json['curso'] = $result;//salva esse result caso os dados nao forem enviados
echo json_encode($json);//devolve o que foi salvo
}
}else {//dados não enviados
$result["codigo"] = 0;
$result["nome"] = 'Não registrado';
$result["categoria"] = 'Não registrado';
$result["professor"]= 'Não registrado';
$json['curso'] = $result;//salva esse result caso os dados nao forem enviados
echo json_encode($json);//devolve o que foi salvo
}
?>
com.android.Volley.Authfailureerror is the error, but I cannot solve it.
– murakami Kauê
the phone or emulator on which the application is running has access to that ip?
– Lucas Duete
tries to run this url right in the browser (as it is a GET method just put right into the address bar of the phone/emulator which, if you get connection, will work
– Lucas Duete
yes I had access, and the url was already running before, after searching mt, I found something that solved, and it was simpler than it seemed.
– murakami Kauê
That solved my problem. In C: wamp64 bin apache apache2.4.23 conf extra httpd-vhosts.conf troque Require local,ou,require local by Require all granted.
– murakami Kauê