1
I’m trying to consume a Rest webservice on Android. I’ve done all the steps of the tutorial, but keeps falling into onFailure and presenting the error message. I have already checked all the code, but since I am a beginner I could not identify the error. If anyone can help me I am putting the code here. (Note: log does not return errors, only when executed falls into onFailure function.)
Rest
package br.com.imobile2.Venda;
import java.util.List;
import br.com.imobile2.Imovel;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
interface ImovelREST {
@GET("ImobWS/webresources/imovel/get/imovel")
Call<List<Imovel>> getImovel();
//@GET("Livros/webresources/br.ufs.tep.livros/buscar/{id}")
// Call<Imovel> getImovelPorId(@Path("id") String id);
public static final Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://127.0.0.1:8080/")
.addConverterFactory(GsonConverterFactory.create())
.build();
}
XML sale
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Venda.VendaFragment"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="65dp">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btSearchv"
android:src="@drawable/iconsearch"
android:layout_gravity="right|center_vertical" />
</FrameLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lvVenda"
android:choiceMode="singleChoice" />
</LinearLayout>
</ScrollView>
Venda Java
package br.com.imobile2.Venda;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.List;
import br.com.imobile2.Imovel;
import br.com.imobile2.ImovelAdapter;
import br.com.imobile2.MainActivity;
import br.com.imobile2.R;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
*/
public class VendaFragment extends Fragment {
ProgressDialog dialog;
public VendaFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_venda, container, false);
return view;
}
@Override
public void onStart() {
super.onStart();
final ListView lvVenda = (ListView) getView().findViewById(R.id.lvVenda);
ImovelREST imovelREST = ImovelREST.retrofit.create(ImovelREST.class);
dialog = new ProgressDialog(getContext());
dialog.setMessage("Carregando...");
dialog.setCancelable(false);
dialog.show();
final Call<List<Imovel>> call = imovelREST.getImovel();
call.enqueue(new Callback<List<Imovel>>() {
@Override
public void onResponse(Call<List<Imovel>> call, Response<List<Imovel>> response) {
if (dialog.isShowing())
dialog.dismiss();
final List<Imovel> listImoveis = response.body();
if (listImoveis != null) {
ImovelAdapter adapter = new ImovelAdapter(getActivity(), listImoveis);
lvVenda.setAdapter(adapter);
lvVenda.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getContext(),VendaDetailsFragment.class);
intent.putExtra("ID", listImoveis.get(i).getId());
startActivity(intent);
}
});
}
}
@Override
public void onFailure(Call<List<Imovel>> call, Throwable t) {
if (dialog.isShowing())
dialog.dismiss();
Toast.makeText(getActivity(), "Problema de acesso", Toast.LENGTH_LONG).show();
}
});
}
}
Webservice (is working and active while testing the application)
package ws;
import com.google.gson.Gson;
import dao.ImovelDAO;
import java.sql.SQLException;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import modelo.Imovel;
@Path("imovel")
public class ImovelWS {
@Context
private UriInfo context;
/**
* Creates a new instance of ImobiWS
*/
public ImovelWS() {
}
/**
* Retrieves representation of an instance of ws.ImobiWS
* @return an instance of java.lang.String
*/
@GET
@Produces("application/json")
public String getJson() {
//TODO return proper representation object
throw new UnsupportedOperationException();
}
@GET
@Produces("application/json")
@Path("get/imovel")
public String getImovel() throws ClassNotFoundException, SQLException{
Gson g = new Gson();
ImovelDAO idao = new ImovelDAO();
List<Imovel> imovel = idao.getImovel();
return g.toJson(imovel);
}
}
Internet permission on the manifest, you’ve seen this?
– viana
You’re already with permission.
– user67866