Error:
I/ERROR: com.android.volley.ParseError: org.json.JSONException: Value codigo of type java.lang.String cannot be converted to JSONObject
My code in Android Studio:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View vista = inflater.inflate(R.layout.fragment_consultar_curso_fragmento, container, false);
campoCodigo = vista.findViewById(R.id.edit_codigo);
campoNome = vista.findViewById(R.id.txt_nome);
campoCategoria = vista.findViewById(R.id.txt_categoria);
campoProfessor = vista.findViewById(R.id.txt_professor);
botaoConsultar = vista.findViewById(R.id.btnConsultarCurso);
imgFoto = vista.findViewById(R.id.imagemId);
request = Volley.newRequestQueue(getContext());
botaoConsultar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
carregarWEBService();
}
});
return vista;
}
private void carregarWEBService() {
progresso = new ProgressDialog(getContext());
progresso.setMessage("Buscando...");
progresso.show();
String url = "http://192.168.x.xxx/webservices/consultar.php?codigo="+campoCodigo.getText().toString());
jsonObjectReq = new JsonObjectRequest(Request.Method.GET, url, null, this, this);
request.add(jsonObjectReq);
}
@Override
public void onErrorResponse(VolleyError error) {
progresso.hide();
Toast.makeText(getContext(), "Não foi possível efetuar a consulta " +error.toString() , Toast.LENGTH_SHORT).show();
Log.i("ERROR", error.toString());
}
@Override
public void onResponse(JSONObject response) {
progresso.hide();
//Toast.makeText(getContext(), "Mensagem: "+response, Toast.LENGTH_SHORT).show();
Curso tabCurso = new Curso();
JSONArray json = response.optJSONArray("curso");
JSONObject jsonObject = null;
try {
jsonObject = json.getJSONObject(0);
tabCurso.setNome(jsonObject.optString("nome"));
tabCurso.setProfessor(jsonObject.optString("professor"));
tabCurso.setCategoria(jsonObject.optString("categoria"));
}catch (JSONException e){
e.printStackTrace();
}
campoNome.setText("Nome: " + tabCurso.getNome());
campoCategoria.setText("Categoria: " + tabCurso.getCategoria());
campoProfessor.setText("Professor: " + tabCurso.getProfessor());
}
My PHP code
<?php
header('Content-type=application/json; charset=utf-8');
include "conexao.php";
$json = array();
//<!-- verifica se existe um código-->
if (isset($_GET["codigo"])){
//recebe o código via get caso ele exista
$codigo = ($_GET["codigo"]);
//Variavel qe armazena a Query de consulta -- busca todos os campos que possue o código recebido
$consulta = "SELECT codigo,nome,categoria,professor FROM curso WHERE codigo = '{$codigo}' ";
//variavel que guarda o estado da execução do método mysqli_query(@param1 conexao, @param2 query)
$resultado = mysqli_query($conexao,$consulta);
//Verifica se recebeu o resultado
if($registro = mysqli_fetch_array($resultado)){
//armazena a lista recebida no array jason curso
$json['curso'][] = $registro;
//teste no browser
//echo $registro['codigo']. ' - ' .$registro['nome']. ' - ' .$registro['categoria']. ' - ' .$registro['professor'];
}else {//erro ao consultar
$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
mysqli_close($conexao);
echo json_encode($json);//devolve o que foi salvo
}
}else{//erro ao consultar
$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
mysqli_close($conexao);
echo json_encode($json);//devolve o que foi salvo
}