使用 Retrofit 时出现 NPE 错误
NPE error using Retrofit
当我尝试从日志中获取数据时,我想使用 POST.But 登录一些名为 vid.me、https://api.vid.me/oauth/authorize 的服务 我已经 NullPointerException.I 尝试制作 Toast 和出现此错误too.I正在尝试获取响应代码以查看我是否正确执行此操作。
我的APIclass:
public interface VideoApi {
@GET("/videos/featured")
Call<Videos> getFeaturedVideo();
@GET("/videos/new")
Call<Videos> getNewVideo();
@FormUrlEncoded
@POST("oauth/authorize")
Call<SignInResults>insertUser(@Field("name") String name,
@Field("password") String password
);
}
我的片段:
public class FeedFragment extends Fragment {
EditText username;
EditText password;
Button btnLogin;
public List<SignInResult> signInResult;
public static final String ROOT_URL = "https://api.vid.me/";
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_feed, container, false);
username = (EditText) rootView.findViewById(R.id.user_name_field);
password = (EditText) rootView.findViewById(R.id.password_field);
btnLogin = (Button)rootView.findViewById(R.id.button_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Authorize();
}
});
return rootView;
}
public void Authorize(){
Retrofit retrofitAdapter = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ROOT_URL)
.build();
final VideoApi videoApi = retrofitAdapter.create(VideoApi.class);
Call<SignInResults> call = videoApi.insertUser(username.getText().toString(),password.getText().toString());
call.enqueue(new Callback<SignInResults>() {
@Override
public void onResponse(Call<SignInResults> call, Response<SignInResults> response) {
Log.d("FeedFragment", "Status Code = " + response.body().signInResults.get(0).getCode());
}
@Override
public void onFailure(Call<SignInResults> call, Throwable t) {
}
});
}
}
Call<SignInResponse> call = videoApi.insertUser(username_value, password_value);
call.enqueue(new Callback<SignInResponse>() {
@Override
public void onResponse(Call<SignInResponse> call, Response<SignInResponse> response) {
SignInResponse results = response.body();
Log.d("Response ==>> ", new GsonBuilder().setPrettyPrinting().create().toJson(results));
}
@Override
public void onFailure(Call<SignInResponse> call, Throwable t) {
}
});
@Headers("Content-Type:application/x-www-form-urlencoded")
@FormUrlEncoded
@POST("/auth/create")
Call<SignInResponse> insertUser(@Field("email") String username,
@Field("password") String password
);
当我尝试从日志中获取数据时,我想使用 POST.But 登录一些名为 vid.me、https://api.vid.me/oauth/authorize 的服务 我已经 NullPointerException.I 尝试制作 Toast 和出现此错误too.I正在尝试获取响应代码以查看我是否正确执行此操作。
我的APIclass:
public interface VideoApi {
@GET("/videos/featured")
Call<Videos> getFeaturedVideo();
@GET("/videos/new")
Call<Videos> getNewVideo();
@FormUrlEncoded
@POST("oauth/authorize")
Call<SignInResults>insertUser(@Field("name") String name,
@Field("password") String password
);
}
我的片段:
public class FeedFragment extends Fragment {
EditText username;
EditText password;
Button btnLogin;
public List<SignInResult> signInResult;
public static final String ROOT_URL = "https://api.vid.me/";
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_feed, container, false);
username = (EditText) rootView.findViewById(R.id.user_name_field);
password = (EditText) rootView.findViewById(R.id.password_field);
btnLogin = (Button)rootView.findViewById(R.id.button_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Authorize();
}
});
return rootView;
}
public void Authorize(){
Retrofit retrofitAdapter = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ROOT_URL)
.build();
final VideoApi videoApi = retrofitAdapter.create(VideoApi.class);
Call<SignInResults> call = videoApi.insertUser(username.getText().toString(),password.getText().toString());
call.enqueue(new Callback<SignInResults>() {
@Override
public void onResponse(Call<SignInResults> call, Response<SignInResults> response) {
Log.d("FeedFragment", "Status Code = " + response.body().signInResults.get(0).getCode());
}
@Override
public void onFailure(Call<SignInResults> call, Throwable t) {
}
});
}
}
Call<SignInResponse> call = videoApi.insertUser(username_value, password_value);
call.enqueue(new Callback<SignInResponse>() {
@Override
public void onResponse(Call<SignInResponse> call, Response<SignInResponse> response) {
SignInResponse results = response.body();
Log.d("Response ==>> ", new GsonBuilder().setPrettyPrinting().create().toJson(results));
}
@Override
public void onFailure(Call<SignInResponse> call, Throwable t) {
}
});
@Headers("Content-Type:application/x-www-form-urlencoded")
@FormUrlEncoded
@POST("/auth/create")
Call<SignInResponse> insertUser(@Field("email") String username,
@Field("password") String password
);