java使用post以“x-www-form-urlencoded”接收接口数据并加上超时处理

public String getOrderEvidence(Map<String, String> parameters){
        String json= JSON.toJSONString(parameters);
        try {
            String postURL = GlobalConstant.ORDER_EVIDENCE_URL;
            PostMethod postMethod = null;
            postMethod = new PostMethod(postURL) ;
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8") ;
            //参数设置,需要注意的就是里边不能传NULL,要传空字符串

            NameValuePair[] data = {
                    new NameValuePair("parameters",json)
            };
            postMethod.setRequestBody(data);
            //连接超时设置为4秒
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();
            HttpPost httpPost = new HttpPost(postURL);
            httpPost.setConfig(requestConfig);
            org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
            int response = httpClient.executeMethod(postMethod); // 执行POST方法
            String result = postMethod.getResponseBodyAsString() ;
            JSONObject jsonObject = new JSONObject(result);
            if(jsonObject!=null){
                JSONObject dataObject = jsonObject.getJSONObject("data");
                if(dataObject!=null){
                    Integer errCode = dataObject.getInt("errCode");
                    /**
                     * 错误码 错误码定义
                     * 0 SUCCESS
                     * -1 模型不存在(表里没数据)
                     * -2 上链信息不存在(表里没数据)
                     * -3 数据未上链
                     * -4 查询信息缺少appkey信息(入参缺少appkey)
                     * -5 查询信息缺少primaryKey信息(入参缺少primaryKey)
                     * -6 查询信息缺少tableName信息(入参缺少tableName)
                     */
                    if(errCode == 0){
                        String evidenceCode = dataObject.getString("data");
                        return evidenceCode;
                    }else{
                        log.error("====getOrderEvidence区块链错误码-1 模型不存在-2 上链信息不存在(表里没数据)-3 数据未上链 -4 参数缺少appkey -5 缺少primaryKey -6 缺少tableName==========" + errCode);
                        return "";
                    }
                }else{
                    return "";
                }
            }else{
                return "";
            }


        } catch (Exception e) {
            log.error("getOrderEvidence请求异常"+e.getMessage(),e);
            return "";
        }
    }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是 axios 的二次封装代码,其中包括了设置 token 和 Content-Type 的代码: ```javascript import axios from 'axios'; // 创建 axios 实例 const instance = axios.create({ baseURL: 'http://localhost:8080', // 设置请求的基础 URL timeout: 10000, // 设置请求超时时间 headers: { // 设置请求头 'Content-Type': 'application/x-www-form-urlencoded' } }); // 添加请求拦截器 instance.interceptors.request.use(config => { // 在发送请求之前做些什么 const token = localStorage.getItem('token'); if (token) { // 设置 token config.headers.Authorization = `Bearer ${token}`; } return config; }, error => { // 对请求错误做些什么 return Promise.reject(error); }); // 添加响应拦截器 instance.interceptors.response.use(response => { // 对响应数据做些什么 return response.data; }, error => { // 对响应错误做些什么 return Promise.reject(error); }); export default instance; ``` 在上面的代码中,我们通过 `create` 方法创建了一个 axios 实例,并且设置了基础的 URL、请求超时时间和请求头。然后,我们通过 `interceptors` 添加了请求拦截器和响应拦截器。 在请求拦截器中,我们获取到了保存在 localStorage 中的 token,并且通过设置 `config.headers.Authorization` 来携带 token。在响应拦截器中,我们只返回了响应数据的 `data` 字段。 如果你想要发送一个携带 token 并且 Content-Type 为 `application/x-www-form-urlencoded` 的 POST 请求,可以这样写: ```javascript import axios from '@/utils/request'; axios.post('/api/login', { username: 'admin', password: '123456' }, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).then(response => { console.log(response); }).catch(error => { console.log(error); }); ``` 在上面的代码中,我们通过第三个参数来设置请求头,这样就能够携带 token 并且设置 Content-Type 为 `application/x-www-form-urlencoded` 了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值