在翻新中通过URL传递数据

时间:2018-07-21 22:47:25

标签: android retrofit2

我想在我的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 "";
}

1 个答案:

答案 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");

更多http://square.github.io/retrofit/