AsyncTask for handling server api calls
There are many things that you do well here. Overall the code is fine.
I have some points that you should seriously consider and some things that you should think about. In the end, this is your code and I don't know everything that you know about it's purpose, usage and further plans.
Seriously consider

Android provides a lovely way to handle String Resources. I suggest you make use of that. Not only is it very handy to keep all your strings stored in .xml-files but it is also impossible to internationalize your messages if you hardcode string values within your code.

As AsyncResult seems to be a good, flexible, generic (generic as in both Java-generics and English generic) utility class, it wouldn't hurt to put getters as public and the fields as private final


Think about

What if the server provides both an error message and more detailed information as a response? I suggest that you create a constructor for your AsyncResult which accepts both T response and String errorMessage. You can then use constructor chaining in your class. Constructor chaining is a good way to reduce code duplication in constructors.

I find the naming of DefaultServerCallTask to be a bit misleading, the usage of the word Default together with the keyword abstract on the same class doesn't make sense to me. If it really is Default, then why is it abstract? (Although I understand your reasons for having it this way, I question the naming of the class).

Your AbstractServerCallTask extends AsyncTask&lt;Void, Void, AsyncResult&lt;Result&gt;&gt;. It is functional and I understand that you can specify data to be sent to the server by calling a constructor and storing it in a field, or creating an inner anonymous class which you actually do when you call new DefaultServerCallTask&lt;LoginResponse&gt;(){ ... }.execute();.
I think that you should consider allowing change of the first Void generics, which is the Param class. If you would allow changing that, then you can pass arguments to your execute method, which can be passed on to callServerMethod instead of having to get variables from outside into your new DefaultServerCallTask&lt;LoginResponse&gt;(){...

It is OK to have a AsyncResult&lt;T&gt; class, but will you have any use for the generics in that class outside your server calls? Your server calls only makes use of AsyncResult&lt;Result&gt;. As hinted by rolfl in his comment, a user currently can't use a AsyncResult&lt;String&gt; along with your classes for server calls.


I want to leave you with something positive though: Overall, your code is fine. So for your question &quot;Is it good at all?&quot; I have to say &quot;yes&quot;.