android retrofit 获取post请求参数值

本文介绍了一种在Android应用中使用Retrofit、OkHttp和RxJava2.x进行网络请求时的有效调试方法,尤其针对如何查看FormBody和MultipartBody的具体内容。

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.

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值