Android OkHttp侦听器添加post参数返回400响应

Android OkHttp侦听器添加post参数返回400响应,android,retrofit2,okhttp,interceptor,Android,Retrofit2,Okhttp,Interceptor,这是我的加密函数。 我必须在Post/Put请求时更改端点并添加参数。开始工作。 当我删除.post(formBody.build())函数时。它的响应是200, 但是如果我添加post(formBody)。它将返回400。 有解决办法吗 private fun encryptMethod(chain: Interceptor.Chain, method: String): Response { var params: HashMap<String, String> = H

这是我的加密函数。 我必须在Post/Put请求时更改端点并添加参数。开始工作。 当我删除
.post(formBody.build())
函数时。它的响应是200, 但是如果我添加
post(formBody)
。它将返回400。 有解决办法吗

private fun encryptMethod(chain: Interceptor.Chain, method: String): Response {

    var params: HashMap<String, String> = HashMap()

    if (chain.request().body() is FormBody){
        params = getHttpUrlParams(chain.request().body() as FormBody)
    }

    val url: HttpUrl = chain.request().url()
    val urlBuilder = url.newBuilder()

    //將舊的path改成params
    var pathParams = ""
    for (position in 0 until url.pathSegments().size) {
        if (position < url.pathSize()) pathParams += "/"
        pathParams += url.pathSegments()[position]
    }

    //更新path
    for (position in 0 until url.pathSegments().size) {
        urlBuilder.removePathSegment(0)
    }
    urlBuilder.addPathSegment("api")

    params["path"] = pathParams
    params["method"] = method
    params["timestamp"] = (System.currentTimeMillis() / 1000).toString()

    Log.i("ddd","params $params ")

    val formBody = FormBody.Builder()
    //將encryptParams加入post
    for ((key, value) in NetworkEncrypt.encryptParams(params)) {
        formBody.add(key, value)
    }

    val builder = chain
        .request()
        .newBuilder()
        .post(formBody.build())
        .url(urlBuilder.build())

    Log.i("ddd",builder.build().toString())

    val request = builder.build()

    return chain.proceed(request)
}

 private fun getHttpUrlParams(formBody: FormBody?): HashMap<String, String> {
    val paramMap: HashMap<String, String> = HashMap()
    if (formBody != null) {
        for (i in 0 until formBody.size()) {
            paramMap[formBody.name(i)] = formBody.value(i)
        }
    }
    return paramMap
}
private方法(链:Interceptor.chain,方法:String):响应{
var params:HashMap=HashMap()
if(chain.request().body()是FormBody){
params=getHttpUrlParams(chain.request().body()作为FormBody)
}
val url:HttpUrl=chain.request().url()
val urlBuilder=url.newBuilder()
//將舊的路径改成params
var pathParams=“”
for(在url.pathSegments().size之前放置在0中){
如果(位置
@FormUrlEncoded@POST(“/anything”)suspend-fun-getTest(@Field(“path”)path:String):如果拦截器路径数据,则响应!=服务路径数据将得到400,所以我不知道如何改变FILDD这个代码示例需要从潜在的回答者运行的工作,考虑用一个完整的例子,例如用一个显示破坏行为的主方法来完成一个完整的例子。你可以从这个文件开始编辑它,请检查。我是马克@FormUrlEncoded@POST(“/anything”)suspend-fun-getTest(@Field(“path”)path:String):如果拦截器路径数据,则响应!=服务路径数据将得到400,所以我不知道如何改变FILDD这个代码示例需要从潜在的回答者运行的工作,考虑用一个完整的例子,例如用一个显示破坏行为的主方法来完成一个完整的例子。你可以从这个文件开始编辑它,请检查。我是马克。