我想在我的recyclerview中显示来自json数据的数据,但是我收到了空指针异常,我不知道我在哪里做错了。
这是我的json数据:
{ “值”:1, “ review_profile_results”:[ { “ review_id”:“ 1”, “ review_name”:“样本”, “ review_user_id”:“ 2”, “ review_comments”:“ +信誉,值得信赖”, “ review_rate”:“ 4”, “ review_rate_def”:“受信任”, “ review_date”:“ 2018-07-22 06:17:31” } ] }
这用于API接口:
@GET (UrlFinal.pathServiceUrl+"show_profile_reviews.php")
Call <Value> show_profileReviews (@Query("id")String id);
我想通过的可能的URL结果
/show_profile_reviews.php?id=c4ca4238a0b923820dcc509a6f75849b
这是我传递数据的方式
private void showProfileReviews(){
String userId = MainActivity.user.getId();
String id_md5 = md5(userId);
Toast.makeText(getActivity(), id_md5, Toast.LENGTH_SHORT).show();
Retrofit retrofit = new Retrofit.Builder ()
.baseUrl (UrlFinal.ipUrl)
.addConverterFactory (GsonConverterFactory.create ())
.build ();
ServiceAPI api = retrofit.create (ServiceAPI.class);
Call<Value> call = api.show_profileReviews(id_md5);
call.enqueue(new Callback<Value>() {
@Override
public void onResponse(@NonNull Call<Value> call, @NonNull Response<Value> response) {
if (Objects.requireNonNull(response.body()).getValue() == 1) {
profile_list = Objects.requireNonNull(response.body()).getReviewProfileResults();
adapter = new Adapter_ProfileReviews(getActivity(), profile_list);
recyclerView.setAdapter(adapter);
Log.d("Result", profile_list.toString());
Log.d("Result", call.toString());
}
}
@Override
public void onFailure(@NonNull Call<Value> call, @NonNull Throwable t) {
Log.d("Result", t.getMessage());
}
});
}
public String md5(String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuilder hexString = new StringBuilder();
for (byte aMessageDigest : messageDigest)
hexString.append(Integer.toHexString(0xFF & aMessageDigest));
return hexString.toString();
}catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
答案 0 :(得分:0)
您有一个用于改造客户端的基本网址,因此,请按如下所示定义界面,
public interface YourApiInterface {
@GET ("/show_profile_reviews")
Call <Value> show_profileReviews (@Query("id")String id);
}
然后,改装电话为 BASE_URL / show_profile_reviews?id =您的ID
如果要使用动态URL,请按如下所示定义界面,
public interface YourApiInterface {
@GET
Call <Value> show_profileReviews (@Url String url);
}
如果您使用动态网址,则可以将网址传递为
apiInterface.show_profileReviews("https://base_url/show_profile_reviews.php?id=c4ca4238a0b923820dcc509a6f75849b");