![JAR search and dependency download from the Maven repository](/logo.png)
com.mzlion.easyokhttp.request.CommonPostRequest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of easy-okhttp Show documentation
Show all versions of easy-okhttp Show documentation
easy-okhttp是对okhttp3上层封装的网络框架,支持文件上传和下载表单提交(文件和一个参数对应多值),
链式调用,并且默认整合Gson,对返回结果多种转换,同时还支持HTTPS单向认证和双向认证等特性。
/*
* Copyright (C) 2016 mzlion([email protected]).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mzlion.easyokhttp.request;
import com.mzlion.core.lang.CollectionUtils;
import com.mzlion.core.lang.StringUtils;
import okhttp3.FormBody;
import okhttp3.Request;
import okhttp3.RequestBody;
import java.util.IdentityHashMap;
import java.util.Map;
/**
*
* HTTP的POST提交封装对象,默认所有参数采用application/x-www-form-urlencoded
编码后传递。
*
* 该POST提交数据形如Web开发的常规表单提交:
*
* <form action="#" method="post" enctype="application/x-www-form-urlencoded">
* <input type="hidden" name="id" value="1">
* vinput type="text" name="username" value="admin">
* </form>
*
*
* @author mzlion on 2016-04-16
*/
public class CommonPostRequest extends AbstractHttpRequest {
/**
* 表单提交的参数对列表
*/
private Map formParameters;
/**
* 默认构造器
*
* @param url 请求地址
*/
public CommonPostRequest(String url) {
super(url);
this.formParameters = new IdentityHashMap<>();
}
/**
* 设置提交的请求参数及其值
*
* @param name 参数名
* @param value 参数值
* @return {@linkplain CommonPostRequest}
*/
public CommonPostRequest formParam(String name, String value) {
if (StringUtils.hasText(name) && StringUtils.hasLength(value)) {
this.formParameters.put(name, value);
}
return this;
}
/**
* 设置提交的请求参数及其值
*
* @param parameters 键值对列表
* @return {@linkplain CommonPostRequest}
*/
public CommonPostRequest formParam(Map parameters) {
if (CollectionUtils.isNotEmpty(parameters)) {
for (String name : parameters.keySet()) {
if (StringUtils.hasLength(name) && StringUtils.hasText(parameters.get(name)))
this.formParameters.put(name, parameters.get(name));
}
}
return this;
}
/**
* 获取{@linkplain RequestBody}对象
*/
@Override
protected RequestBody generateRequestBody() {
FormBody.Builder builder = new FormBody.Builder();
if (CollectionUtils.isNotEmpty(this.formParameters)) {
for (Map.Entry entry : this.formParameters.entrySet()) {
builder.add(entry.getKey(), entry.getValue());
}
}
return builder.build();
}
/**
* 根据不同的请求方式,将RequestBody转换成Request对象
*
* @param requestBody 请求体
* @return {@link Request}
* @see RequestBody
*/
@Override
protected Request generateRequest(RequestBody requestBody) {
Request.Builder builder = new Request.Builder();
builder.headers(super.buildHeaders());
return builder.url(this.buildUrl()).post(requestBody).build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy