简体   繁体   中英

Retrofit with SimpleXmlConverter returns null

I am using RetroFit with SimpleXmlConverter . The problem is every time i am execute it returns null response.

XML

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<Cities>

<City Id="USCA0987" Name="San Francisco"  >

</City>

</Cities>

POJO classes:-

    public class Weather
    {

        private Cities Cities;

        public Cities getCities ()
        {
            return Cities;
        }

        public void setCities (Cities Cities)
        {
            this.Cities = Cities;
        }

        @Override
        public String toString()
        {
            return "ClassPojo [Cities = "+Cities+"]";
        }
    }

    public class Cities {

    private City City;

    public City getCity ()
    {
        return City;
    }

    public void setCity (City City)
    {
        this.City = City;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [City = "+City+"]";
    }

}


 public class City {

     private String Name;

     private String Id;

     public String getName ()
     {
         return Name;
     }

     public void setName (String Name)
     {
         this.Name = Name;
     }

     public String getId ()
     {
         return Id;
     }

     public void setId (String Id)
     {
         this.Id = Id;
     }

     @Override
     public String toString()
     {
         return "ClassPojo [Name = "+Name+", Id = "+Id+"]";
     }
}

I have created retrofit client using below code

retrofit = new Retrofit.Builder()
                .baseUrl("https://s3-us-west-2.amazonaws.com/")
                .addConverterFactory(
                        SimpleXmlConverterFactory.createNonStrict())
                .client(client)
                .build();

In response i am getting cities null. Please have a look.

Add this changes in your POJO class.

@Root
public class Weather
  {
    @Element
    private Cities Cities;

    public Cities getCities ()
    {
        return Cities;
    }

    public void setCities (Cities Cities)
    {
        this.Cities = Cities;
    }


    @Override
    public String toString()
    {
        return "ClassPojo [Cities = "+Cities+"]";
    }
}


public class Cities {

@Element
private City City;

public City getCity ()
{
    return City;
}

public void setCity (City City)
{
    this.City = City;
}

@Override
public String toString()
{
    return "ClassPojo [City = "+City+"]";
}

}


public class City {

 @Attribute
 private String Name;

 @Attribute
 private String Id;

 public String getName ()
 {
     return Name;
 }

 public void setName (String Name)
 {
     this.Name = Name;
 }

 public String getId ()
 {
     return Id;
 }

 public void setId (String Id)
 {
     this.Id = Id;
 }

 @Override
 public String toString()
 {
     return "ClassPojo [Name = "+Name+", Id = "+Id+"]";
 }
}

You can find more from Official Site

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM