我看了几个答案,我遗漏了一些东西。还有没有办法在 Retrofit 处理之前查看数据?
这是代码
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();
}
}
如果你有的话,你可以拉绳子StringConverter
and 字符串类型输出 https://gist.github.com/NikolaDespotoski/18029c3926eacf1b7fc0。这将提供纯字符串并且不会反序列化任何内容。当然你可以尝试验证里面的JSON是否有效fromBody()
方法,如果有效则继续反序列化(将其扩展到GsonConverter
),否则只需获取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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)