I get an error in the response from Retrofit Expected BEGIN_ARRAY, but there was STRING in row 1 column 1 path $

I looked through a few answers, I missed something. Is there also a way to see the data before upgrading it?

Here is the code

extends Activity implements Callback<List<MemberPOJO>> { @Inject MembersInterface memberInterfaceService; @Override public void onFailure(Exception ex) { setProgressBarIndeterminateVisibility(false); String retrofitError = "Error: " + ex.getMessage(); Log.e("LoadActivity", retrofitError); } @Override public void onSuccess(List<MemberPOJO> result) { ArrayList<String> strings = new ArrayList<String>(result.size()); Log.e("LoadActivity", "MemberPOJO:" + result); } 

...

 public void getMemberHostData() { MemberLoader loader = new MemberLoader(this, memberInterfaceService); RetrofitLoaderManager.init(getLoaderManager(), 0, loader, this); } static class MemberLoader extends RetrofitLoader<List<MemberPOJO>, MembersInterface> { public MemberLoader(Context context, MembersInterface service) { super(context, service); } RestAdapter.Builder builder= new RestAdapter.Builder() .setRequestInterceptor(new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("Accept", "application/json;versions=1"); request.addHeader("authorization",getAuthorization(getContext())); } }); @Override public List<MemberPOJO> call(MembersInterface service) { return service.listOfMemebers(); } } 
0
android gson retrofit
source share
1 answer

You can pull the string if you have StringConverter and StringTypedOutput . This will result in a simple string and it will not deserialize anything. Of course, you can try to check if the JSON is valid inside the fromBody() method, if it is valid, and then just start with deserialization (extends it to GsonConverter ), otherwise just get a Response

 public class StringConverter implements Converter { @Override public Object fromBody(TypedInput arg0, Type arg1) throws ConversionException { return getStringFromInputStream(arg0.in()); } @Override public TypedOutput toBody(Object arg0) { String string = (String) arg0; return new StringTypedOutput(string.getBytes(Charset.forName(HTTP.UTF_8))); } public static String getStringFromInputStream(InputStream is) { BufferedReader br = null; StringBuilder sb = new StringBuilder(); String line; try { br = new BufferedReader(new InputStreamReader(is)); while ((line = br.readLine()) != null) { sb.append(line); } } catch (IOException e) { e.printStackTrace(); } finally { //close the stream if needed. } return sb.toString(); } } 
+3
source share

All Articles