Android Retrofit 2.0 JSON文档未完全使用 [英] Android Retrofit 2.0 JSON document was not fully consumed

查看:141
本文介绍了Android Retrofit 2.0 JSON文档未完全使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Retrofit 2.0通过pojo类以post request的形式发布数据,并返回字符串作为失败或成功的响应,现在的问题是它不能使用json.

I am using retrofit 2.0 to post data in the form of post request with pojo class and returning string as an response either failure or success and now the problem is that it says json cannot be consumed.

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.google.code.gson:gson:2.6.1'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.okhttp:okhttp:2.4.0

现在我正尝试发布jsonobect,如下所示.我的pojo课堂如下

Now I am trying to post jsonobect as like below. My pojo class is as below

  public class RecruiterProfileModel implements Serializable
    {
        @SerializedName("fname")
        private String firstname;
        @SerializedName("lname")
        private String lastname;
        @SerializedName("company")
        private String companyName;
        @SerializedName("address")
        private String address;
        @SerializedName("email")
        private String email;
        @SerializedName("paswd")
        private String password;
        @SerializedName("ph")
        private String phone;
        @SerializedName("location")
        private String location;
        @SerializedName("city")
        private String city;
        @SerializedName("state")
        private String state;
        @SerializedName("contry")
        private String contry;
        @SerializedName("pincode")
        private String pincode;
        @SerializedName("landmark")
        private String landmark;

        public RecruiterProfileModel(String fname, String lastname, String landmark, String location,
                                     String city, String state, String contry, String pincode,
                                     String email, String password, String phone,
                                     String address,String companyName)
        {
            this.firstname=fname;
            this.lastname=lastname;
            this.landmark=landmark;
            this.location=location;
            this.city=city;
            this.state=state;
            this.contry=contry;
            this.pincode=pincode;
            this.email=email;
            this.password=password;
            this.phone=phone;
            this.address=address;
            this.companyName=companyName;
        }

        public String getFirstname() {
            return firstname;
        }

        public void setFirstname(String firstname) {
            this.firstname = firstname;
        }

        public String getLastname() {
            return lastname;
        }

        public void setLastname(String lastname) {
            this.lastname = lastname;
        }

        public String getCompanyName() {
            return companyName;
        }

        public void setCompanyName(String companyName) {
            this.companyName = companyName;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public String getLocation() {
            return location;
        }

        public void setLocation(String location) {
            this.location = location;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getState() {
            return state;
        }

        public void setState(String state) {
            this.state = state;
        }

        public String getContry() {
            return contry;
        }

        public void setContry(String contry) {
            this.contry = contry;
        }

        public String getPincode() {
            return pincode;
        }

        public void setPincode(String pincode) {
            this.pincode = pincode;
        }

        public String getLandmark() {
            return landmark;
        }

        public void setLandmark(String landmark) {
            this.landmark = landmark;
        }
    }

我的界面将pojo模型用作主体参数,并返回成功或失败的字符串响应

My Interface is using pojo model as body parameter and returning string response either success or failure

@POST("empowerapp/providersreg.php")
    Call<String> registerRecruiter(
            @Body RecruiterProfileModel profileModel);

我的发帖方法

     public void registerRecruiter(RecruiterProfileModel profileModel) {
             Gson gson = new GsonBuilder().setLenient().create();

            OkHttpClient client = new OkHttpClient();

            Retrofit retrofit = new Retrofit.Builder().baseUrl(Allconstants.MAIN_URL).client(client).addConverterFactory(GsonConverterFactory.create(gson)).build();

            RetrofitInterface service = retrofit.create(RetrofitInterface.class);

            Call<String> call = service.registerRecruiter(profileModel);
            call.enqueue(new Callback<String>() {
                @Override
                public void onResponse(Response<String> response, Retrofit retrofit) {
                    System.out.println("###coming"+response.body().toString());
                    if (response.body().toString().equalsIgnoreCase("success"))
                    {
                        pd.dismiss();
                        loginSession.createLoginSession(Allconstants.RECRUITER,Allconstants.R_REG_ACTIVITY);
                        Toast.makeText(Registration.this,"successfully registered",Toast.LENGTH_LONG).show();
                        System.out.println("###coming"+response.body().toString());
                    }else{
                        pd.dismiss();
                        Toast.makeText(Registration.this,"oops!!!something went wrong..try again",Toast.LENGTH_LONG).show();
                    }
                }

                @Override
                public void onFailure(Throwable t) {
                    pd.dismiss();
                    Toast.makeText(Registration.this,t.getStackTrace().toString(),Toast.LENGTH_LONG).show();
                    System.out.println("###error1"+t.getMessage());
                }
            });
        }

现在的问题是它说无法使用json.请帮助我解决此问题.非常感谢您的帮助.预先感谢

The problem now is that it says json cannot be consumed.Please help me in resolving this issue .Your help will be much appreciated. Thanks in advance

推荐答案

在创建Retrofit对象时尝试添加.addConverterFactory(ScalarsConverterFactory.create()).

try adding .addConverterFactory(ScalarsConverterFactory.create()) when creating Retrofit object.

Retrofit retrofit = new Retrofit.Builder()
      .baseUrl(Allconstants.MAIN_URL)
      .client(client)
      .addConverterFactory(ScalarsConverterFactory.create())
      .build();

您还需要在build.gradle中添加以下内容(使用您指示的翻新版本)

You'll also need to add following to your build.gradle (using version of retrofit you indicated you were using)

compile "com.squareup.retrofit2:converter-scalars:2.0.0-beta2"

这篇关于Android Retrofit 2.0 JSON文档未完全使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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