核心包:

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

一:接收数据

json数据格式如下:

1、单一对象型:

a、数据格式

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

  1. @ResponseBody
  2. @RequestMapping(value = "/specialtyOA2DMS.do", method = RequestMethod.POST)
  3. public JSONObject specialtyOA2DMS(@RequestBody JSONObject jsonObject, HttpServletRequest request)
  4. throws GenericBusinessException {
  5. JSONObject return_json = new JSONObject();
  6.  
  7. try {
  8. //校验入参
  9. if (StringTool.isEmpty(jsonObject.toString())) {
  10. return_json.put("RESULT_STATUS", "F");
  11. return_json.put("RESULT_REASON", "入参错误");
  12.  
  13. return return_json;
  14. }
  15. //校验入参单头不能为空
  16. if(StringTool.isEmpty(jsonObject.getString("APPLY_DATE")) || StringTool.isEmpty(jsonObject.getString("OA_FORM_NO")) || StringTool.isEmpty(jsonObject.getString("SPECIALTY_LINE"))){
  17. return_json.put("RESULT_STATUS", "F");
  18. return_json.put("RESULT_REASON", "入参必填项存在空值(OA_FORM_NO-OA流程单号;APPLY_DATE-申请日期)");
  19.  
  20. return return_json;
  21. } else {
  22. String oaFormNoc = (String)jsonObject.getString("OA_FORM_NO");//OA流程单号
  23.  
  24. //校验入参单身数据
  25. JSONArray specialtyLine = jsonObject.getJSONArray("SPECIALTY_LINE");
  26. if(null != specialtyLine && specialtyLine.size()>0){
  27. for(Object object : specialtyLine){
  28. JSONObject obj = (JSONObject)object;
  29. String sapContractNo = (String)obj.getString("SAP_CONTRACT_NO");//SAP合同编号
  30. String prodCode = (String)obj.getString("SPECIALTY_PROD_CODE");//特制品编码
  31. String unit = (String)obj.getString("SPECIALTY_PROD_UNIT");//单位
  32. String qty = (String)obj.getString("SPECIALTY_PROD_QTY");//数量
  33. //必填不能为空
  34. if(StringTool.isEmpty(sapContractNo) || StringTool.isEmpty(prodCode) || StringTool.isEmpty(unit) || StringTool.isEmpty(qty)){
  35. return_json.put("RESULT_STATUS", "F");
  36. return_json.put("RESULT_REASON", "入参必填项存在空值(SAP_CONTRACT_NO-SAP合同编号/SPECIALTY_PROD_CODE-特制品编码/SPECIALTY_PROD_UNIT-单位/SPECIALTY_PROD_QTY-申请数量)");
  37.  
  38. return return_json;
  39. }
  40.  
  41. }
  42. return_json.put("RESULT_STATUS", "S");
  43. return_json.put("RESULT_REASON", "成功");
  44. return return_json;
  45. } else {
  46. return_json.put("RESULT_STATUS", "F");
  47. return_json.put("RESULT_REASON", "入参错误");
  48.  
  49. return return_json;
  50. }
  51. }
  52.  
  53. } catch(Exception e){
  54. return_json.put("RESULT_STATUS", "F");
  55. return_json.put("RESULT_REASON", "入参错误");
  56. return return_json;
  57. }
  58.  
  59. return return_json;
  60. }

2、对象对象数组型:

a、数据格式

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

  1. @ResponseBody
  2. @RequestMapping(value = "/specialtySAP2DMS.do", method = RequestMethod.POST)
  3. public JSONObject specialtySAP2DMS(@RequestBody JSONObject[] jsonObject, HttpServletRequest request)
  4. throws GenericBusinessException {
  5. JSONObject return_json = new JSONObject();
  6. SapImportData sapData = new SapImportData();
  7. List<SpecialtyProduct> specialtyProductList = new ArrayList<SpecialtyProduct>();
  8.  
  9. try {
  10. //校验入参
  11. if(null != jsonObject && (jsonObject.length)>0){
  12. for(JSONObject jsonObj : jsonObject){
  13. SpecialtyProduct specialtyProduct = new SpecialtyProduct();
  14. String prodCode = "";//物料编号
  15. String prodDesc = "";//物料描述
  16. String prodFlag = "";//标识
  17. String prodRemark = "";//说明
  18. String prodIscontr = "";//是否进行数量管控
  19. if(StringTool.isEmpty(jsonObj.getString("PROD_CODE"))){
  20. return_json.put("RESULT_STATUS", "F");
  21. return_json.put("RESULT_REASON", "入参必填项存在空值(PROD_CODE-物料编号)");
  22. this.sapLog(sapData, "", "参数为空", "入参必填项存在空值(PROD_CODE-物料编号)","specialtySAP2DMS.do");
  23. return return_json;
  24. } else {
  25. prodCode = (String)jsonObj.getString("PROD_CODE");//物料编号
  26. if(StringTool.isNotEmpty(jsonObj.getString("PROD_DESC"))){
  27. prodDesc = (String)jsonObj.getString("PROD_DESC");
  28. }
  29. if(StringTool.isNotEmpty(jsonObj.getString("PROD_FLAG"))){
  30. prodFlag = (String)jsonObj.getString("PROD_FLAG");
  31. }
  32. if(StringTool.isNotEmpty(jsonObj.getString("PROD_REMARK"))){
  33. prodRemark = (String)jsonObj.getString("PROD_REMARK");
  34. }
  35. if(StringTool.isNotEmpty(jsonObj.getString("PROD_ISCONTR"))){
  36. prodIscontr = (String)jsonObj.getString("PROD_ISCONTR");
  37. }
  38. specialtyProduct.setProdCode(prodCode);
  39. specialtyProduct.setProdDesc(prodDesc);
  40. specialtyProduct.setProdFlag(prodFlag);
  41. specialtyProduct.setProdRemark(prodRemark);
  42. specialtyProduct.setProdIscontr(prodIscontr);
  43. //处理开始时间和结束时间
  44. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  45. format.setTimeZone(TimeZone.getTimeZone("GMT+8"));
  46. Calendar c = Calendar.getInstance();
  47. Timestamp ct = new Timestamp(c.getTimeInMillis());//创建时间
  48. specialtyProduct.setCreatedDate(ct);
  49.  
  50. //通用字段
  51. specialtyProduct.setCreatorId(1l);
  52. specialtyProduct.setCreatorName("admin");
  53. specialtyProduct.setModiDate(ct);
  54. specialtyProduct.setModifierId(1l);
  55. specialtyProduct.setModifierName("admin");
  56. specialtyProduct.setDataSource("SAP汇入");
  57. specialtyProduct.setOwnerId(1l);
  58. //添加到List集合中批量保存
  59. specialtyProductList.add(specialtyProduct);
  60. }
  61. }
  62.  
  63. return_json.put("RESULT_STATUS", "S");
  64.  
  65. return_json.put("RESULT_REASON", "成功");
  66. return return_json;
  67.  
  68. } else {
  69. return_json.put("RESULT_STATUS", "F");
  70. return_json.put("RESULT_REASON", "入参错误");
  71.  
  72. return return_json;
  73. }
  74.  
  75. } catch(Exception e){
  76. return_json.put("RESULT_STATUS", "F");
  77.  
  78. return_json.put("RESULT_REASON", "接口处理错误");
  79. return return_json;
  80. }
  81.  
  82. }

二:传输数据到接口

a、数据格式

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

  1. @SuppressWarnings("unchecked")
  2. @Override
  3. public String AIReturnHttpPost(List<Object> ObjectList)throws GenericBusinessException{
  4. String resultStr = "";
  5. String entityJson = JSON.toJSONString(ObjectList);
  6. String url = "";//填自己要调接口的路径
  7. HttpClient client = new DefaultHttpClient();
  8. HttpPost httppost = new HttpPost(url);
  9. StringEntity entity = new StringEntity(entityJson, "utf-8");
  10. entity.setContentEncoding("UTF-8");
  11. entity.setContentType("application/json");
  12. httppost.setEntity(entity);
  13. Character statusWL = new Character('F');
  14. String message = "";
  15.  
  16. try {
  17. HttpResponse result = client.execute(httppost);
  18. String resData = EntityUtils.toString(result.getEntity(), "utf-8");
  19. if(StringTool.isNotEmpty(resData)){
  20. JSONObject jobg = JSON.parseObject(resData);
  21. if(StringTool.isNotEmpty(jobg.get("code"))){
  22. String code = jobg.get("code").toString();
  23.  
  24. if(StringTool.isNotEmpty(jobg.get("message"))){
  25. message = jobg.get("message").toString();
  26. }
  27. if("200".equals(code)){
  28. statusWL = new Character('T');
  29. } else {
  30. statusWL = new Character('F');
  31. }
  32. resultStr = resultStr+code+"-"+message;
  33. }
  34. }
  35.  
  36. } catch (Exception e) {
  37. message = "处理接口异常";
  38. e.printStackTrace();
  39. }
  40.  
  41. return resultStr;
  42. }

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. Eclipse Hadoop源码阅读环境

    一.解压hadoop src包到workspace目录.为加快下载jar包的速度,在eclipse的maven设置里将配置文件的路径设置正确,然后配置maven的settings.xml: <m ...

  2. search(6)- elastic4s-CRUD

    如果我们把ES作为某种数据库来使用的话,必须熟练掌握ES的CRUD操作.在这之前先更正一下上篇中关于检查索引是否存在的方法:elastic4s的具体调用如下: //删除索引 val rspExists ...

  3. 详解 HashMap

    本篇博文的知识点,在我们的日常生活中,应用十分广阔.比如:每个学生,都有自己的对应的学号.每一个公民,都有自己的身份证号- - 相信看到这里,有的同学基本上已经猜到了这个类的主要用途.那么,话不多说, ...

  4. .NET Core3.1总体预览和第一个Core程序的创建

    小伙伴们大家好!欢迎阅读本贴,这里是常哥说编程的专栏,.NetCore已经出来一段时间了,很多小伙伴可能也开始了学习,但是.NetCore毕竟在学习上和我们常用的.NET Framework还是有很大 ...

  5. Java集合linkdList

    LinkedList特有功能: A:添加功能 public void addFitst(Object e) public void addLast(Object e) B:获取功能 public Ob ...

  6. java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列

    什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即 ...

  7. ORM之单表、多表操作

    参考1 参考2 表与表之间的关系: 一对一(OneToOneField):一对一字段无论建在哪张关系表里面都可以,但是推荐建在查询频率比较高的那张表里面 一对多(ForeignKey):一对多字段建在 ...

  8. 一图解析MongoDB

    了解MongoDB,这一张图就够了: 版权所有,转载请注明出处.

  9. [Batch脚本] if else 的格式

    必须写成一行 ) else (,否则报错. if %abc%=="yes" ( ... ) else ( ... )

  10. Navicat premium15安装破解教程

    Navicat premium15安装破解教程 注意:安装之前请卸载干净navicat,不要覆盖安装 1.去官网下载Navicat premium15的安装包 官网地址:https://www.nav ...