android retrofit 获取post请求参数值

来源:互联网 发布:js弹出窗口居中 编辑:程序博客网 时间:2024/06/05 18:08

Android 使用retrofit + okhttp + Rxjava2.x 做网络请求已成为趋势

我最近使用

Flowable<ApiResponse<Object>> getFacevalidety(@Part("ID") String ID, @Part("name") String name,

@Part MultipartBody.Part part)

做网络请求的时候发现一个很有意思的问题,

如:int ID = 10, 是一个int类型的值,然后把ID转换成String类型传到服务器,变成“10”,在外面添加一层引号;

如果我想把post请求的参数打印出来看过究竟;下面就是post请求查看请求参数的方法;

这个不管是FormBody,MultipartBody都可以获取到请求参数

if(body != null){

    try {

        Buffer buffer = new Buffer();

        body.writeTo(buffer);

        Charset charset =UTF8;

//请求参数值保存在requestbody中的charset

        MediaType contentType = body.contentType();

        if (contentType != null) {

            charset = contentType.charset(UTF8);

        }


        if (isPlaintext(buffer)) {

//把charset 读到buffer中

            LogUtil.e(TAG,buffer.readString(charset));

            LogUtil.e(TAG,"--> END " + request.method()

                    + " (" + body.contentLength() + "-byte body)");

        } else {

            LogUtil.e(TAG,"--> END " + request.method() + " (binary "

                    + body.contentLength() + "-byte body omitted)");

        }

    } catch (IOException e) {

        e.printStackTrace();

    }

}


//单纯读取FormBody 中的key与value

if (request.body() instanceof FormBody) {

    FormBody oldFormBody = (FormBody) request.body();

    for (int i = 0; i < oldFormBody.size(); i++) {

        sb.append(oldFormBody.encodedName(i) + "=key=value==" + oldFormBody.encodedValue(i));

    }

}


static boolean isPlaintext(Buffer buffer) {

    try {

        Buffer prefix = new Buffer();

        long byteCount = buffer.size() < 64 ? buffer.size() : 64;

        buffer.copyTo(prefix, 0, byteCount);

        for (int i = 0; i < 16; i++) {

            if (prefix.exhausted()) {

                break;

            }

            int codePoint = prefix.readUtf8CodePoint();

            if (Character.isISOControl(codePoint) && !Character.isWhitespace(codePoint)) {

                return false;

            }

        }

        return true;

    } catch (EOFException e) {

        return false; // Truncated UTF-8 sequence.

    }

}


原创粉丝点击