尝试获取 POST 方法改造的数据 [英] Trying to get data for POST method Retrofit

查看:57
本文介绍了尝试获取 POST 方法改造的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试登录 wev 服务时,我正在尝试获取用户名.我需要这个用户名来检查我是否正确.但是在尝试获取数据时有 NPE,但是当我在没有数据的情况下制作 Toast 时,它可以工作!onResponse 工作,但我必须获取此操作的代码来构建我的应用程序的逻辑.例如,如果我的代码==200,则构建新活动,否则构建警报对话框或其他内容.我做错了什么?我的片段:

Im trying to get username when I try to login to wev service.I need this username to check did I this right or no.But have NPE when try to get data,but when I just make Toast without data,it works!onResponse work,but I must to get code of this operation to build logic of my app.For example if my code==200,build new activity,else-build alertdialog or something else. What I did wrong? myFragment:

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);

        String username_value = username.getText().toString();
        String password_value = password.getText().toString();
      Call<SignInResults> call =   videoApi.insertUser(username_value,password_value);
call.enqueue(new Callback<SignInResults>() {
    @Override
    public void onResponse(Call<SignInResults> call, Response<SignInResults> response) {
        Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT).show();
      String response_value =   response.body().signInResults.get(0).getUsername();
        Log.d("FeedFragment",response_value);
    }

    @Override
    public void onFailure(Call<SignInResults> call, Throwable t) {

    }
});
    }
}

我的接口 API:

public interface VideoApi {

    @GET("/videos/featured")
    Call<Videos> getFeaturedVideo();

    @GET("/videos/new")
    Call<Videos> getNewVideo();

    @FormUrlEncoded
    @POST("/auth/create")
   Call<SignInResults>insertUser(@Field("username") String username,
                           @Field("password") String password
                           );
}

和错误:

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.vid_me_app.FeedFragment$2.onResponse(FeedFragment.java:59)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)

推荐答案

SignInResults.java//模型类

SignInResults.java // Model class

clas SignInResults {
   public Boolean status;
   public Auth auth;
   public User user;
}

User.java//用户模型

User.java //User Model

public class User {
    public String userId;
    public String username;
    public String avatar;
}

在 onResponse 函数中查看此代码

checkout this code in onResponse function

if (response.isSuccess()) {

    SignInResults results = response.body();

    if(results != null) {

        String userName = results.user.username;

        Log.d("User Name ==>> ", userName);

    }

} else {
    // Do whatever you want if API is unsuccessful.
}

这篇关于尝试获取 POST 方法改造的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆