简体   繁体   中英

Retrofit Error :500 Internal server error in Android

Am Using retrofit for my connection with server,My app has signin page and signout page During Login i get the value from text box and send using POST request to the server It works fine,

   public void LoginUser(View v)

{RestAdapter adapter = new RestAdapter.Builder()      
            .setEndpoint(ROOT_URL)
            .build(); 

    WashAPI api = adapter.create(WashAPI.class);

    api.LoginUser(



            Email.getText().toString(),
            Password.getText().toString(),

            //Creating an anonymous callback
            new Callback<Response>() {
                @Override
                public void success(Response result, Response response) {
                    //On success we will read the server's output using bufferedreader
                    //Creating a bufferedreader object
                    BufferedReader reader = null;

                    //An string to store output from the server
                    String output = "";

                    try {
                        //Initializing buffered reader
                        reader = new BufferedReader(new InputStreamReader(result.getBody().in()));

                        //Reading the output in the string
                        output = reader.readLine();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

Interface for signin

public interface WashAPI {
@FormUrlEncoded
@POST("/xxx/yyy/signin")
public void LoginUser(
        @Field("email") String email,
        @Field("password") String password,

        Callback<Response> callback);

}

This works good

After login with my server API it returns me a token, At the time of signout i need to send the token so my session get experied.

code for signout

public void signout(View v)
{
    Log.d("insidetoken",t);
    RestAdapter adapter = new RestAdapter.Builder()
            .setEndpoint(ROOT_URL)
            .build();
    SignoutAPI api = adapter.create(SignoutAPI.class);
             api.signout(t,
                    new Callback<Response>() {
                        @Override
                        public void success(Response result, Response response) {

                            BufferedReader reader = null;
                            String output = "";
                            try {
                                reader = new BufferedReader(new InputStreamReader(result.getBody().in()));
                                output = reader.readLine();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }

Interface for signout

public interface SignoutAPI {
@FormUrlEncoded
@POST("/xxx/yyy/zzz/signout")
public void signout(
       @Field("token") String token,
        Callback<Response> callback);

}

My code is same for both signin and sigout

but for signin it works and for signout it gives me RETROFIT ERROR : 500 INTERNAL SERVER ERROR

But Using POSTMAN It works fine在此处输入图片说明

500 INTERNAL SERVER ERROR means that there is problem in the server side you should have to check it using postman.

I am damn sure that there will be problem in the web service response not of your code at android side.

As mentioned in the comments too, it appears you are doing something in the login service that is not being done in the sign out service.

To fix this, make sure in you sign out service, you are checking for a POST parameter named token .

Maybe you are giving token in wrong way In my way It was "Bearer TOKEN" -> for Authorization in Header In my case I changed my parameters to that

fun setProfileAvatar(token: String,@Part image: MultipartBody.Part) : Single<Message> {
        return apiService.setProfileAvatar("Bearer ${token}",image)
    }

You can enable logging in retrofit to show you server-side errors and messages. use this link to understand how to enable it.

https://stackoverflow.com/a/33256827/9474700

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