使用自己写的StringConverter 来封装的 Converter 来解析String private static final RestAdapter CAMERA_CLIENT_NETWORK_SERVICE_REST_ADAPTER_APX = new RestAdapter.Builder()        .setEndpoint("http://192.168.0.1")        .setConverter(new StringConverter())        .setClient(new OkClient())        .setLogLevel(BuildConfig.DEBUG ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE)        .build();

package com.mysnapcam.mscsecure.util;

import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.lang.reflect.Type;

import retrofit.converter.ConversionException;import retrofit.converter.Converter;import retrofit.mime.MimeUtil;import retrofit.mime.TypedInput;import retrofit.mime.TypedOutput;

/** * Created by Administrator on 2016/5/17. * Imitation GsonConverter write StringConverter because when you add Apx returns the String value of the data I wish HTTP response was correct */public class StringConverter implements Converter {    private String charset;

    public StringConverter() {        this("UTF-8");    }

    public StringConverter(String charset) {        this.charset = charset;    }

    @Override    public Object fromBody(TypedInput body, Type type) throws ConversionException {        String charset = this.charset;        if (body.mimeType() != null) {            charset = MimeUtil.parseCharset(body.mimeType(), charset);        }        InputStreamReader isr = null;        try {            isr = new InputStreamReader(body.in(), charset);            StringBuffer sb = new StringBuffer();            char[] b = new char[1024];            int i = -1;            while ((i = isr.read(b)) > -1) {                sb.append(b,0,i);            }

            return sb.toString();        } catch (IOException e) {            throw new ConversionException(e);        } finally {            if (isr != null) {                try {                    isr.close();                } catch (IOException ignored) {                }            }        }

    }

    @Override    public TypedOutput toBody(Object object) {        try {            return new StringTypedOutput(((String) object).getBytes(charset), charset);        } catch (UnsupportedEncodingException e) {            throw new AssertionError(e);        }    }

    private static class StringTypedOutput implements TypedOutput {        private final byte[] stringBytes;        private final String mimeType;

        StringTypedOutput(byte[] StringBytes, String encode) {            this.stringBytes = StringBytes;            this.mimeType = "application/json; charset=" + encode;        }

        @Override        public String fileName() {            return null;        }

        @Override        public String mimeType() {            return mimeType;        }

        @Override        public long length() {            return stringBytes.length;        }

        @Override        public void writeTo(OutputStream out) throws IOException {            out.write(stringBytes);        }    }}

最新文章

  1. String 字符串
  2. 李洪强iOS经典面试题153- 补充
  3. 手机浏览器不支持 IDBObjectStore.getAll
  4. java13
  5. DirectWrite文字排版——字符串去尾
  6. Hibernate中的Configuration类
  7. 使用virtualenv或zc.buildout创建Python-tornado分离环境
  8. Json文件/网址解析
  9. 第一章 CLR的执行模型
  10. UVa 3704 Cellular Automaton(矩乘)
  11. 使用CURL发彩信,短信和进行多线程
  12. 【python3之文件操作】
  13. 分类导航菜单的制作(附源码)--HTML
  14. Python xlrd xlwt 读取写入Excel.
  15. inflate()引发NullPointerException
  16. pyhanlp 两种依存句法分类器
  17. JAVA仿百度分页
  18. Linux TTY驱动--Serial Core层【转】
  19. oracle 杀掉当前用户的进程
  20. Node.js学习笔记(七) --- Node.js的静态文件托管、路 由、EJS 模板引擎、GET 、POST

热门文章

  1. ES6 语法简介
  2. 由json生成php配置文件
  3. POJ 1035 Spell checker 简单字符串匹配
  4. EF5.0 对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性
  5. Spring实战——无需一行xml配置实现自动化注入
  6. 配置Apache服务器 数据库mySQL
  7. 解决android模拟器太大,小屏幕无法完全显示的问题
  8. Uva 10288 Coupons
  9. matlab学习笔记(一)单元数组
  10. keybd_event函数用法