核心包:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

一:接收数据

json数据格式如下:

1、单一对象型:

a、数据格式

b、接口java(核心)代码范例

    @ResponseBody
@RequestMapping(value = "/specialtyOA2DMS.do", method = RequestMethod.POST)
public JSONObject specialtyOA2DMS(@RequestBody JSONObject jsonObject, HttpServletRequest request)
throws GenericBusinessException {
JSONObject return_json = new JSONObject(); try {
//校验入参
if (StringTool.isEmpty(jsonObject.toString())) {
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参错误"); return return_json;
}
//校验入参单头不能为空
if(StringTool.isEmpty(jsonObject.getString("APPLY_DATE")) || StringTool.isEmpty(jsonObject.getString("OA_FORM_NO")) || StringTool.isEmpty(jsonObject.getString("SPECIALTY_LINE"))){
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参必填项存在空值(OA_FORM_NO-OA流程单号;APPLY_DATE-申请日期)"); return return_json;
} else {
String oaFormNoc = (String)jsonObject.getString("OA_FORM_NO");//OA流程单号 //校验入参单身数据
JSONArray specialtyLine = jsonObject.getJSONArray("SPECIALTY_LINE");
if(null != specialtyLine && specialtyLine.size()>0){
for(Object object : specialtyLine){
JSONObject obj = (JSONObject)object;
String sapContractNo = (String)obj.getString("SAP_CONTRACT_NO");//SAP合同编号
String prodCode = (String)obj.getString("SPECIALTY_PROD_CODE");//特制品编码
String unit = (String)obj.getString("SPECIALTY_PROD_UNIT");//单位
String qty = (String)obj.getString("SPECIALTY_PROD_QTY");//数量
//必填不能为空
if(StringTool.isEmpty(sapContractNo) || StringTool.isEmpty(prodCode) || StringTool.isEmpty(unit) || StringTool.isEmpty(qty)){
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参必填项存在空值(SAP_CONTRACT_NO-SAP合同编号/SPECIALTY_PROD_CODE-特制品编码/SPECIALTY_PROD_UNIT-单位/SPECIALTY_PROD_QTY-申请数量)"); return return_json;
} }
return_json.put("RESULT_STATUS", "S");
return_json.put("RESULT_REASON", "成功");
return return_json;
} else {
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参错误"); return return_json;
}
} } catch(Exception e){
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参错误");
return return_json;
} return return_json;
}

2、对象对象数组型:

a、数据格式

b、接口java(核心)代码范例

    @ResponseBody
@RequestMapping(value = "/specialtySAP2DMS.do", method = RequestMethod.POST)
public JSONObject specialtySAP2DMS(@RequestBody JSONObject[] jsonObject, HttpServletRequest request)
throws GenericBusinessException {
JSONObject return_json = new JSONObject();
SapImportData sapData = new SapImportData();
List<SpecialtyProduct> specialtyProductList = new ArrayList<SpecialtyProduct>(); try {
//校验入参
if(null != jsonObject && (jsonObject.length)>0){
for(JSONObject jsonObj : jsonObject){
SpecialtyProduct specialtyProduct = new SpecialtyProduct();
String prodCode = "";//物料编号
String prodDesc = "";//物料描述
String prodFlag = "";//标识
String prodRemark = "";//说明
String prodIscontr = "";//是否进行数量管控
if(StringTool.isEmpty(jsonObj.getString("PROD_CODE"))){
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参必填项存在空值(PROD_CODE-物料编号)");
this.sapLog(sapData, "", "参数为空", "入参必填项存在空值(PROD_CODE-物料编号)","specialtySAP2DMS.do");
return return_json;
} else {
prodCode = (String)jsonObj.getString("PROD_CODE");//物料编号
if(StringTool.isNotEmpty(jsonObj.getString("PROD_DESC"))){
prodDesc = (String)jsonObj.getString("PROD_DESC");
}
if(StringTool.isNotEmpty(jsonObj.getString("PROD_FLAG"))){
prodFlag = (String)jsonObj.getString("PROD_FLAG");
}
if(StringTool.isNotEmpty(jsonObj.getString("PROD_REMARK"))){
prodRemark = (String)jsonObj.getString("PROD_REMARK");
}
if(StringTool.isNotEmpty(jsonObj.getString("PROD_ISCONTR"))){
prodIscontr = (String)jsonObj.getString("PROD_ISCONTR");
}
specialtyProduct.setProdCode(prodCode);
specialtyProduct.setProdDesc(prodDesc);
specialtyProduct.setProdFlag(prodFlag);
specialtyProduct.setProdRemark(prodRemark);
specialtyProduct.setProdIscontr(prodIscontr);
//处理开始时间和结束时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT+8"));
Calendar c = Calendar.getInstance();
Timestamp ct = new Timestamp(c.getTimeInMillis());//创建时间
specialtyProduct.setCreatedDate(ct); //通用字段
specialtyProduct.setCreatorId(1l);
specialtyProduct.setCreatorName("admin");
specialtyProduct.setModiDate(ct);
specialtyProduct.setModifierId(1l);
specialtyProduct.setModifierName("admin");
specialtyProduct.setDataSource("SAP汇入");
specialtyProduct.setOwnerId(1l);
//添加到List集合中批量保存
specialtyProductList.add(specialtyProduct);
}
} return_json.put("RESULT_STATUS", "S"); return_json.put("RESULT_REASON", "成功");
return return_json; } else {
return_json.put("RESULT_STATUS", "F");
return_json.put("RESULT_REASON", "入参错误"); return return_json;
} } catch(Exception e){
return_json.put("RESULT_STATUS", "F"); return_json.put("RESULT_REASON", "接口处理错误");
return return_json;
} }

二:传输数据到接口

a、数据格式

b、接口java(核心)代码范例

    @SuppressWarnings("unchecked")
@Override
public String AIReturnHttpPost(List<Object> ObjectList)throws GenericBusinessException{
String resultStr = "";
String entityJson = JSON.toJSONString(ObjectList);
String url = "";//填自己要调接口的路径
HttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
StringEntity entity = new StringEntity(entityJson, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httppost.setEntity(entity);
Character statusWL = new Character('F');
String message = ""; try {
HttpResponse result = client.execute(httppost);
String resData = EntityUtils.toString(result.getEntity(), "utf-8");
if(StringTool.isNotEmpty(resData)){
JSONObject jobg = JSON.parseObject(resData);
if(StringTool.isNotEmpty(jobg.get("code"))){
String code = jobg.get("code").toString(); if(StringTool.isNotEmpty(jobg.get("message"))){
message = jobg.get("message").toString();
}
if("200".equals(code)){
statusWL = new Character('T');
} else {
statusWL = new Character('F');
}
resultStr = resultStr+code+"-"+message;
}
} } catch (Exception e) {
message = "处理接口异常";
e.printStackTrace();
} return resultStr;
}

HttpClient之Post接口代码范例的更多相关文章

  1. C# 7.0 新功能代码范例

    随着新版本的IDE Visual Studio 15 紧锣密鼓的开发中,2016年8月24日,微软发布了与之配套的C# 7.0 preview 的新特性. 其主要特性有: 内联声明out变量 (Out ...

  2. Java认证:JavaRunnable线程编写接口代码

    Java认证:JavaRunnable线程编写接口代码.JavaRunnable线程如何才能更好的适应目前的编程环境呢?下面我们就看看如何才能更好的进行相关环境.希望下面的文章对大家有所帮助.Java ...

  3. NSDate常用代码范例

    NSDate常用代码范例 NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建N ...

  4. 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二

    写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...

  5. php短信接口代码

    这篇文章主要为大家详细介绍了php短信接口代码,php短信发送.php批量发送.php获取余额等代码,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了几个常用的php短信接口代码,供大家参考,具体内 ...

  6. HttpClient方式调用接口的实例

    使用HttpClient的方式调用接口的实例. public class TestHttpClient { public static void main(String[] args) { // 请求 ...

  7. 我的第一个python web开发框架(33)——接口代码重构

    前面ORM模块我们已经完成了开发,接下来要做的就是对项目代码进行重构了.因为对底层数据库操作模块(db_helper.py)进行了改造,之前项目的接口代码全都跑不起来了. 在写ORM模块时,我们已经对 ...

  8. Swagger结合mustache模板生成后台接口代码、以及前后台建模代码

    之前项目中使用的的thrift来建模,维护前后台模型以及rest接口,前台使用的是angular2: 但是使用thrift只能生成建模,后台的rest接口的Controller文件还是需要手动去写,一 ...

  9. 单点登录SSO图示和讲解(有代码范例)转帖

    完整的代码范例已完成,因和本文时序图严格对照,注释整理还需要一些工作,完成后将在下一篇放出.大家下载配置后,本地跑起来会是图一动画所示的运行效果,敬请期待. 敢说最准确,因为: 我严格对照所画时序图的 ...

随机推荐

  1. 经典算法之归并排序——python和JS实现

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:韩忠康 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  2. tortoise 设置beyond Compare比较工具

    1.桌面右击tortoiseSVN->setting->Diff Viewer面板,选择external,选中beyond Compare路径

  3. Postman:Pre-request Script

    Pre-request Script:前置处理,会在发出请求前执行,主要用在生成一些动态参数. 例如:api接口都会有签名校验,这个校验在我们api测试的时候很不方便,这里可以利用 postman 前 ...

  4. [Asp.Net Core] Blazor Server Side 项目实践 - 切换页面时保留状态

    前言: 这是 项目实践系列 , 算是中高级系列博文, 用于为项目开发过程中不好解决的问题提出解决方案的. 不属于入门级系列. 解释起来也比较跳跃, 只讲重点. 因为有网友的项目需求, 所以提前把这些解 ...

  5. 【已解决】error setting certificate verify locations报错

    目录 1.问题描述 2.问题分析 3.解决方法 1.问题描述 在公司的电脑上从Github上clone项目的时候git黑窗口报错"error setting certificate veri ...

  6. 聊聊Spring Boot Actuator

    概述 在本文中,我们将介绍Spring Boot Actuator.我们将首先介绍基础知识,然后详细讨论Spring Boot 1.x和2.x中的可用内容. 我们将在Spring Boot 1.x中学 ...

  7. 高德地图首席科学家任小枫QA答疑汇总丨视觉+地图技术有哪些新玩法?

    上周,阿里巴巴高德地图首席科学家任小枫在#大咖学长云对话#的在线直播活动上就计算机视觉相关技术发展以及在地图出行领域的应用与大家做技术交流,直播间互动火爆,尤其在QA环节,学弟学妹们纷纷就感兴趣的视觉 ...

  8. 20199326《Linux内核原理与分析》第十一周作业

    Shellsock攻击实验 实验背景 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发. Shellshock,又称Bash ...

  9. NPM 私有仓库的搭建

    NPM 私有仓库的搭建 为什么搭建私有仓库 balabala,当然是有需求的时候嘛 搭建流程 介绍和安装verdaccio 备注: 程序启动后,配置文件为/home/work/.config/verd ...

  10. Spring5参考指南:Bean的生命周期管理

    文章目录 Spring Bean 的生命周期回调 总结生命周期机制 startup和Shutdown回调 优雅的关闭Spring IoC容器 Spring Bean 的生命周期回调 Spring中的B ...