Pierre Colart
Pierre Colart

Reputation: 175

Retrofit Error 500 when I try to Post

I try to Post a value to my Rest Service, my problem is to know why I have an Error 500 ? It is my first time with this framework and I don't know how to have response from WebService ...

I give you my error :

    jplanningandroid.ejplanningandroid W/System.err: retrofit.RetrofitError: 500 
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:388)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at java.lang.reflect.Proxy.invoke(Proxy.java:393)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at $Proxy0.PostDisponibilite(Unknown Source)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at ejplanningandroid.ejplanningandroid.Class.PostTask.doInBackground(PostTask.java:28)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at ejplanningandroid.ejplanningandroid.Class.PostTask.doInBackground(PostTask.java:16)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
07-31 12:18:43.648 28828-28927/ejplanningandroid.ejplanningandroid W/System.err:     at java.lang.Thread.run(Thread.java:818)

I post my data with a Asynctask :

public class PostTask extends AsyncTask<String,Void,List<String>> {

    @Override
    protected List<String> doInBackground(String... params) {
        try {
            InterfaceService interfaceService = new RestAdapter.Builder()
                    .setEndpoint(InterfaceService.path).build()
                    .create(InterfaceService.class);
            String login = params[0];
            String pass = params[1];
            String date = params[2];

            List<String> post = interfaceService.PostDisponibilite(login, pass,date);

            return post;
        }catch (RetrofitError retrioftError){
            retrioftError.printStackTrace();
            return null;
        }
    }
}

AND My post :

@FormUrlEncoded
@POST("/disponibilite")
List PostDisponibilite(@Query("login") String login, @Query("password") String password,
                 @Field("dateDisponibilite") String dateDisponibilite);

I give you my Rest post :

 @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response addisponibilite(@QueryParam("login") String login,
            @QueryParam("password") String password, String  dateDisponibilite) {
        try {
             Utilisateur utilisateur = UtilisateurMapper.getByPseudoAndMDP(login.trim(), password.trim());
             if (utilisateur.getLogin() != null) {
            Disponibilite disponibilite = new Disponibilite();
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
            Date dateFormater = format.parse(dateDisponibilite);
            disponibilite.setDate(dateFormater);
            mapper.add(disponibilite);
            UtilisateurDisponibilite utilisateurDisponibilite = new UtilisateurDisponibilite();
            utilisateurDisponibilite.setUtilisateur(utilisateur);
            utilisateurDisponibilite.setDisponibilite(disponibilite);
            utilisateurDisponibiliteMapper.add(utilisateurDisponibilite);
            return Response.status(Response.Status.CREATED).entity(disponibilite).build();}
             else {
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
                    new MessageServiceErreur("Vous devez être connecté pour accéder au service")).build();
        }
        } catch (IllegalStateMessage exception) {
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
                    new MessageServiceErreur(dateDisponibilite)).build();
        } catch (ParseException ex) {
            Logger.getLogger(DisponibiliteService.class.getName()).log(Level.SEVERE, null, ex);
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(
                    new MessageServiceErreur(dateDisponibilite+" PArse error")).build();
        } 

    }

I use my asyntask with :

PostTask postTask =
                    (PostTask) new PostTask()
                            .execute(((MainActivity) getActivity()).getUtilisateur().getLogin(),
                                    ((MainActivity) getActivity()).getUtilisateur().getMotDepasse(),
                                    sdf.format(new Date(calendar.getDate())));

My question is How can I my exception message send to my Rest Service in my android log ?

500 ERROR FROM POSTMAN

500 ERROR

Upvotes: 0

Views: 943

Answers (1)

Oussema Aroua
Oussema Aroua

Reputation: 5329

ERROR 500 INTERNAL SERVER ERROR means that there is problem in the server side not at your android application, check your webservice using POSTMAN link

Upvotes: 1

Related Questions