最近通过调用另一个合作公司提供的接口实现方法,借鉴同事之前编写的方法

  Models.JSON.Patient类中有各种属性,也可增加属性来满足新需求

public string TakeAppoint(string AppointCode, string RefundAmount, string BusinessSource)
{
  try
  {
    //调用地址
    string strUrl = UrlSet.Default.UrlTakeAppoint;
    //将参数赋入地址
    strUrl = string.Format(strUrl, AppointCode, RefundAmount, BusinessSource);
    //调用web
    string returnValue = Analytical.Invoke(strUrl);
    //解析返回值
    Models.JSON.Patient patient = Analytical.AnalyticalJson(returnValue);
    if (Analytical.errCode < 1)
    {
    this.errCode = Analytical.errCode;
    this.errMsg = Analytical.errMsg;
    return "-1|" + Analytical.errMsg;
    }
    return "1|" + AppointCode + "|" + RefundAmount + "|" + BusinessSource;
    }
  catch (Exception ex)
  {
    this.errCode = -1;
    this.errMsg = ex.Message + ex.StackTrace;
    Logger.WriteLog(errMsg, true);
    return "-1|" + errMsg;
  }
}

下面的方法可以从返回的URL串中获取需要的参数

public static string Invoke(string strUrl)
{
  string returnValue = string.Empty;

  try
  {
    Logger.FolderName = "CAREATE";
    Logger.WriteLog(string.Format(Logger.ProcessHISMessageFormat, "入参", strUrl, "", ""), false);

    // 调用接口
    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl);
    System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    System.IO.StreamReader streamRead = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
    returnValue = streamRead.ReadToEnd();
    streamRead.Close();

    Logger.FolderName = "CAREATE";
    Logger.WriteLog(string.Format(Logger.ProcessHISMessageFormat, "出参", strUrl, returnValue, ""), false);

    return returnValue;
  }
  catch (Exception ex)
  {
    return returnValue;
  }
}

解析返回值,赋入Models.JSON.Patient实体中

public static Models.JSON.Patient AnalyticalJson(string returnValue)
{
  Models.JSON.Patient patient = new Models.JSON.Patient();

  if (string.IsNullOrEmpty(returnValue))
  {
    errCode = -1;
    errMsg = "未获取到数据!";
    return patient;
  }

  // 取result值
  JObject jsMessage = JObject.Parse(returnValue);
  string returnCode = (string)jsMessage["result"];

  if (returnCode == "-1")
  {
    errCode = -1;
    errMsg = (string)jsMessage["message"];
    return null;
  }

  // 解析返回值编码
  string msg = AnalyticalCode(returnCode);
  if (!string.IsNullOrEmpty(msg))
  {
    errCode = -1;
    errMsg = msg;
    return patient;
  }

  // 返回数据行数
  int rows = Convert.ToInt32(jsMessage["data"]["total"].ToString());
  if (rows < 0)
  {
    errCode = -1;
    errMsg = "未获取到数据!";
    return patient;
  }

  JArray jar = JArray.Parse(jsMessage["data"]["rows"].ToString());

  patient = Deserialize<Models.JSON.Patient>(jar[0].ToString());

  errCode = 1;
  return patient;
}

URL类型入参串调用接口的更多相关文章

  1. 字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在上一篇 Helloworld 中,我们初步尝试使用了 Javassist字节编程的 ...

  2. MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘

    背景 最近有一个数据统计服务需要升级SpringBoot的版本,由1.5.x.RELEASE直接升级到2.3.0.RELEASE,考虑到没有用到SpringBoot的内建SPI,升级过程算是顺利.但是 ...

  3. 入参为json类型的接口测试示例

    一.接口文档内容 二.使用postman(入参为json类型) 如下部分内容即是json串: { "name":"刘星", "grade": ...

  4. 8-2 开发接口 (入参是json格式)

    1.开发入参事json格式的接口 import json import tools import flask from .check_session import check_session serv ...

  5. (一)将mockjs集成到VUE中后,怎样根据接口入参返回mock结果

    1)安装mockjs,这一步跳过 2)在项目中建立mock模块,笔者的目录结构如下 mock模块与接口模块一一对应,有一个接口,就有一个mock 3)编写登陆模块mock接口,代码如下: import ...

  6. robot:接口入参为图片时如何发送请求

    https://www.cnblogs.com/changyou615/p/8776507.html 接口是上传图片,通过F12抓包获得如下信息 由于使用的是RequestsLibrary,所以先看一 ...

  7. dubbo接口方法重载且入参未显式指定序列化id导致ClassCastException分析

    问题描述&模拟 线上登录接口,通过监控查看,有类型转换异常,具体报错如下图 此报错信息是dubbo consumer端显示,且登录大部分是正常,有少量部分会报类型转换异常,同事通过更换方法名+ ...

  8. C#构造函数在继承时必须要求与父类型构造函数入参相同怎么办?

    摘要 我们都知道,C#中,在类型继承时,由于构造子类必须先构造其父类型的内容,因此,必须子类型的构造函数中调用父类型的构造函数(无参数的不需要显式声明). 但是往往我们会出现,子类型本身的构造函数大于 ...

  9. 从输出日志中提取接口的入参和返回做为用例导入到excel中

    1  背景 接口用例已经在项目中的yml文件中编写,但是yml文件不能做为交付文档用,本文对工作中从接口输出日志中提取用例信息,并导入到excel文件中做了总些 2  工具 idea,notepad+ ...

随机推荐

  1. java collection.sort()根据时间排序list

    首先:定义bean 然后:定义比较器 最后:测试使用 一.userBean package com.butterfly.Class; public class user { private Strin ...

  2. viewport就是这回事

    前言 对于移动webapp开发人员来说,viewport是个很重要的东西,容易用但很多时候都是不明白的,于是我决心去弄清楚它. <meta name="viewport" c ...

  3. Ubuntu 下,修改 Mac address

    ifconfig    //    check Mac address sudo ifconfig eth0 down sudo ifconfig eth0 hw ether xx:xx:xx:xx: ...

  4. route使用详解

    route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问题:该Linu ...

  5. 第一篇puppet

    1,什么是puppet puppet是一种Linux.Unix.windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统服务等.puppe ...

  6. 冰冻三尺非一日之寒-socket

    第八章 Socket语法及相关 SocketServer实现多并发 socket概念: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket又称&q ...

  7. DSP, SSP, DMP

    先了解下广告的产业链有哪些人群: 广告主advertisers 显然是指想为自己的品牌或者产品做广告的人,例如宝马.Intel.蒙牛-- 媒体publisers       则是提供广告位置的载体,例 ...

  8. BZOJ 3809: Gty的二逼妹子序列

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1387  Solved: 400[Submit][Status][Di ...

  9. Java内存模型深度解读

    Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的.Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型. 如果你想设计表现良好的并发 ...

  10. Java框架Struts2

    struts2的核心和工作原理   在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标 Struts设计的第一目标就是使MVC模式应用于we ...