核心包:

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. 详解 TreeMap

    (有关Map集合的基本性质,请观看本人博文-- <详解 Map集合>) TreeMap: 特点: TreeMap 键不允许插入null 键的底层数据结构是红黑树,可保证键的排序和唯一性 线 ...

  2. Java 多线程实现方式二:实现 Runnable 接口

    由于java是单继承,很多时候为了实现多线程 通过继承 Thread 类后,就不能再继承其他类了.为了方便可以通过实现 Runnable 接口来实现,和Tread 类似需要重写run 方法. 下面通过 ...

  3. HTML之前端组成、标签

    详情见:https://www.cnblogs.com/liwenzhou/p/7988087.html https://www.cnblogs.com/zhangguosheng1121/p/109 ...

  4. 【FishFX】花式撩骚,打造TypeScript易用框架。

    · 栗子入手 假设有以下foo数组,数组中每个对象都拥有id,name两个属性,现在需要查找id > 0的对象数量. const foo: Array<{ id: number, name ...

  5. 关于synergy的问题

    报错信息主要集中在以下两条: ERROR: ssl error occurred (system call failure) ERROR: eof violates ssl protocol 通过查找 ...

  6. 关于mysql的范式——反范式的思路

    数据库的设计,是有模式的,就是在实际生产的项目中,按照怎样怎样步骤的去做.减少冗余呀,一对多呀等等. 那么回归到一个问题:数据库究竟是为了添加,还是为了查询?这个问题有些轴,以 增删改查四律而言,都是 ...

  7. 数据结构(C语言版)---排序

    1.排序:重排表中元素. 2.根据数据元素是否完全在内存中,将排序算法分为内部排序和外部排序两类. 3.插入排序:将一个待排序记录按关键字大小插入到前面已排好的子序列中,直到全部记录插入完成. 1)直 ...

  8. 笔记本安装ubuntu18.08,解决过程中出现的各种问题

    笔记本安装ubuntu18.08,解决过程中出现的各种问题 1.做启动U盘 在官网下载要安装的镜像,使用软碟通制作U盘安装盘 文件 -- 打开 然后 启动 -- 写入硬盘映像 -- 选择你的u盘 -- ...

  9. 全网最全最细的appium自动化测试环境搭建教程以及appium工作原理

    一.前言 ​ 对于appium自动化测试环境的搭建我相信90%的自学者都是在痛苦中挣扎,在挣扎中放弃,在放弃后又重新开始,只有10%的人,人品比较好,能够很快并顺利的搭建成功.appium 自动化测试 ...

  10. Linux 高 wio 分析

    High IO wait Table of Contents 1. 现象 2. 分析 2.1. iotop或者pidstat 2.1.1. iotop 2.1.2. pidstat 2.2. 脚本 2 ...