Android OkHttp侦听器添加post参数返回400响应
这是我的加密函数。 我必须在Post/Put请求时更改端点并添加参数。开始工作。 当我删除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(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这个代码示例需要从潜在的回答者运行的工作,考虑用一个完整的例子,例如用一个显示破坏行为的主方法来完成一个完整的例子。你可以从这个文件开始编辑它,请检查。我是马克。