Android app does not connect on local webservice

Asked

Viewed 545 times

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.

  • 1

    the phone or emulator on which the application is running has access to that ip?

  • 1

    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

  • 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.

  • 1

    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.

1 answer

1

To access your local server by Android Studio emulator you must use this IP 10.0.2.2. I hope it helps!

  • 1

    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

Browser other questions tagged

You are not signed in. Login or sign up in order to post.