私はAndroidが初めてで、githubの基本的なSimpleService.javaでRetrofit2を使用しようとしています。サンプルは非常にうまく機能しますが、myURL を使用すると、次のようになりますNullPointerException
。
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(myURL)
.addConverterFactory(GsonConverterFactory.create())
.build();
// Create an instance of our GitHub API interface.
SimpleService.GitHub github = retrofit.create(SimpleService.GitHub.class);
// Create a call instance for looking up Retrofit contributors.
Call<List<SimpleService.Pending>> call2 = github.getPendings();
List<SimpleService.Pending> pendings = null;
try {
pendings = call2.execute().body();
} catch (IOException e) {
e.printStackTrace();
}
for (SimpleService.Pending pending : pendings) {
System.out.println(pending.idpr + " ;;; " + pending.lastlat + " ;;; " + pending.lastlng);
}
}
});
thread.start();
ブロック内のコードtry
はnullを返しますデバッガーは言います。これが私のインターフェース(名前は変更していませんが、サンプルのようにGitHubのままです)とSimpleService
クラスです:
public final class SimpleService {
public static final String API_URL = myURL;
public static class Pending {
public final int idpr;
public final double lastlat;
public final double lastlng;
public Pending(int idpr, double lastlat, double lastlng) {
this.idpr = idpr;
this.lastlat = lastlat;
this.lastlng = lastlng;
}
}
public interface GitHub {
@GET("/repos/{owner}/{repo}/contributors")
Call<List<Contributor>> contributors(
@Path("owner") String owner,
@Path("repo") String repo);
@GET("/pendings")
Call<List<Pending>> getPendings();
}
そして、これが私が受け取る典型的なjsonです:
[
{"idpr":1,"lastlat":48.788986,"lastlng":7.24545,"idu":{"username":"foulekparo"}},
{"idpr":2,"lastlat":48.803717,"lastlng":6.47526,"idu":{"username":"flouka"}}
]
私は何が間違っているのか分かりません。