2016-04-05 2 views
1

bonjour.ANDROID Volley + Gson (POST)

Je souhaite effectuer une demande de publication à l'aide de gson.

Je suis la classe implémentés dans le site Android ... http://developer.android.com/intl/pt-br/training/volley/request-custom.html

UserRequestHelper.userRequest(Request.Method.POST, EndpointURL.USUARIO, null, new Response.Listener<Usuario>() { 
        @Override 
        public void onResponse(Usuario response) { 
         Toast.makeText(getActivity(), "Cadastro realizado com sucesso!", Toast.LENGTH_SHORT).show(); 
        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(getActivity(), "Erro ao realizar cadastro.", Toast.LENGTH_SHORT).show(); 
        } 
       }); 

je besoin d'un corps pour envoyer à l'utilisateur? Comment puis-je envoyer l'utilisateur de l'objet pour faire une demande de publication?

Quelqu'un pourrait-il m'aider?

Répondre

3

vous devez surcharger getBody:

@Override 
public byte[] getBody() throws AuthFailureError { 
    return gson.toJson(dataIn).getBytes(); 
} 

toute la classe par exemple (former le même lien) édité:

public class GsonRequest<T> extends Request<T> { 
private final Gson gson = new Gson(); 
private final Class<T> clazz; 
private final Map<String, String> headers; 
private final Response.Listener<T> listener; 
private final Object dataIn; 

/** 
* Make a GET request and return a parsed object from JSON. 
* 
* @param url URL of the request to make 
* @param clazz Relevant class object, for Gson's reflection 
* @param headers Map of request headers 
*/ 
public GsonRequest(String url, Object dataIn, Class<T> clazz, Map<String, String> headers, 
        Response.Listener<T> listener, Response.ErrorListener errorListener) { 
    super(Method.POST, url, errorListener); 
    this.dataIn = dataIn; 
    this.clazz = clazz; 
    this.headers = headers; 
    this.listener = listener; 
} 

@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    return headers != null ? headers : super.getHeaders(); 
} 

@Override 
protected void deliverResponse(T response) { 
    listener.onResponse(response); 
} 

@Override 
public byte[] getBody() throws AuthFailureError { 
    return gson.toJson(dataIn).getBytes(); 
} 

@Override 
protected Response<T> parseNetworkResponse(NetworkResponse response) { 
    try { 
     String json = new String(
       response.data, 
       HttpHeaderParser.parseCharset(response.headers)); 
     return Response.success(
       gson.fromJson(json, clazz), 
       HttpHeaderParser.parseCacheHeaders(response)); 
    } catch (UnsupportedEncodingException e) { 
     return Response.error(new ParseError(e)); 
    } catch (JsonSyntaxException e) { 
     return Response.error(new ParseError(e)); 
    } 
    } 
} 
+0

que je ne ai juste besoin de construire un objet comme utilisateur utilisateur = new utilisateur () user.setName ("test"); et passez l'utilisateur dans la variable dataIn? –

+0

oui. vous pouvez vouloir changer le type de l'objet à l'utilisateur si vous allez passer ce type seulement – djodjo

+0

Que je peux changer l'objet au type d'utilisateur ... Mais qu'est-ce que clazz? Pourriez-vous m'expliquer? –