2015-07-05 4 views
0

Я использую Дооснащение отправить запрос изображения и получить этот JSonУплотненный JSON объект (дооснащения)

{"response":{ 
    "face":{ 
     "value":"true", 
     "confidence":55 
    }, 
    "gender":{ 
     "value":"male", 
     "confidence":73 
    }, 
    ... 
}} 

и я получаю его Модернизированный ....

RestAdapter adapter = new RestAdapter.Builder() 
        .setLogLevel(RestAdapter.LogLevel.FULL) 
        .setEndpoint(END_POINT) 
        .build(); 
    Mylistenerr listener = adapter.create(Mylistenerr.class); 
    File photo = new File(picturePath); 
    TypedFile image = new TypedFile("multipart/image/jpg", photo); 
    listener.setUserImage(
     image, 
     new Callback<respostring>() { 
      @Override 
      public void success(respostring rp, Response arg1) {} 

      @Override 
      public void failure(RetrofitError arg0) { 
      pd.hide(); 
      pd.dismiss(); 
      Log.d("ERROR:", arg0.getLocalizedMessage()); 
      } 
     });  
    } 

    private static class respostring { 
     private Content face; 
     private Content gender; 
      respostring() {} 
    } 


    class Content 
    { 
     private int confidence; 
     private String value; 

     Content(){} 

     public int getconf(){ 
     return this.confidence; 
     } 
     public String getvalue(){ 
     return this.value; 
     } 
} 

Мой интерфейс

public interface Mylistenerr { 
    @Multipart 
    @POST("/public/test") 
    void setUserImage(
    @Part("image") TypedFile file,   
    Callback<respostring> response); 
} 

но есть модификация ошибка. Здесь что-то не хватает?

+0

waht является «respostring» в обратном вызове ответ); ?? – gropapa

ответ

0

Я бы порекомендовал вам использовать Gson для десериализации json, так как модификация поддерживает его очень хорошо. Тогда вы можете просто создать классы, как это:

Ваш класс лицо:

public class Face implements Serializable { 

    @SerializedName("value") 
    public boolean value; 

    @SerializedName("confidence") 
    public int confidence; 

} 

Ваш пол класс:

public class Gender implements Serializable { 

    @SerializedName("value") 
    public String value; 

    @SerializedName("confidence") 
    public int confidence; 

} 

ваш класс ответа:

public class YourResponseType implements Serializable { 

    @SerializedName("face") 
    public Face face; 

    @SerializedName("gender") 
    public Gender gender; 
} 

Тогда вы можете на самом деле сделайте переоснащение, сделав для вас остальное:

listener.setUserImage(image, new Callback<YourResonseType>() {...}); 

Надеюсь, что это поможет!

+0

Я пробовал ваше решение, и все значения равны нулю !!! :( – lmiaa

+0

О, извините, я забыл добавить класс, который обертывает ответ. Будет что-то вроде публичного класса MyResponseContainer реализует Serializable {@SerializedName («response») YourResponseType yourResponse;} – TheWhiteLlama

+1

да нет, я обнаружил, что позже и я собирался приходите писать ... но вы его нашли, большое спасибо :) – lmiaa

Смежные вопросы