改造 - RestAdapter.create崩溃

时间:2014-08-28 13:13:42

标签: android retrofit

我的新Android应用程序的Retrofit存在问题。 我刚刚开始使用Retrofit看它是不是很棒!

我正在使用公共服务 - 它为火车站返回一些x和y坐标: http://stog.itog.dk/itog/action/list/format/json

所以,我有以下几段代码:

火车站 - 每个火车站都有吸气剂和安装者:

private String name;
private int wid;
private double x;
private double y;

接口:

   public interface IStogService {
    @GET("/itog/action/list/format/json")
    List<Train> getStog();
}

在我的活动中:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint("http://stog.itog.dk")
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();

        IStogService stogService = restAdapter.create(IStogService.class);
    }

运行onCreate的最后一行会使其崩溃。我不知道为什么 - 而且LogCat没有告诉任何好的东西:( 希望那里有任何聪明的人!

注意:我已在AndroidManifest中添加了互联网权限

2 个答案:

答案 0 :(得分:1)

您可能会收到NetworkonMainThread异常。在一个单独的线程或AsyncTask中进行改装适配器和调用,因为android不允许在主线程上进行网络调用。

public class Backend extends AsyncTask<MainActivity,Integer,String> {
@Override
protected String doInBackground(MainActivity... params) {
    try{
        RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint("http://stog.itog.dk")
        .build();
        IStogService stogService = restAdapter.create(IStogService.class);
        // Make calls and store in string

    }
    catch(Exception e)
    {
        Log.d("O Noes " +e);
    }
}
@Override
protected void onPostExecute(String k)
{

}
}

答案 1 :(得分:0)

我能够通过将gson.jar添加到libs文件夹来解决这个问题。