提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
三、使用C#调用T100接口
前言
我们的T100接口开发好了,其他的应用系统需要调用此接口,我们用C#调用来举例:
一、soapui 测试T100 服务接口
1.1、soapui操作
二、我们用C#仿照SoapUi的操作进行T100接口调用
2.1 C#调用SoapUI源码
using Newtonsoft.Json;
using Nito.AsyncEx;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
AsyncContext.Run(() => MainAsync(args));
}
/// <summary>
/// 因为用到了异步所以用了这个Main函数
/// </summary>
/// <param name="args"></param>
static async void MainAsync(string[] args)
{
var res = await DoPost<dynamic>();
Console.WriteLine(res);
Console.ReadKey();
}
public static async Task<dynamic> DoPost<dynamic>()
{
string jsonContent = GetMessage();
string responseBody = string.Empty;
using (HttpClient httpClient = new HttpClient())
{
// 后面要接"application/xml"
var content = new StringContent(jsonContent, Encoding.UTF8, "application/xml");
// 使用post
httpClient.DefaultRequestHeaders.Add("Method", "Post");
HttpResponseMessage response = await httpClient.PostAsync(@"http://192.168.0.71/wtoptst/ws/r/awsp920", content);
responseBody = await response.Content.ReadAsStringAsync();
dynamic res = (dynamic)JsonConvert.DeserializeObject<dynamic>(responseBody);
return res;
}
}
/// <summary>
/// 需要变动的可在GetMessage中加参数传进去拼接字符串
/// 我这里是写死的
/// </summary>
/// <returns></returns>
public static string GetMessage()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("{");
sb.AppendLine("\"key\":\"d41d8cd98f00b204e9800998ecf8427e\",");
sb.AppendLine("\"type\":\"sync\",");
sb.AppendLine("\"host\":{");
sb.AppendLine(" \"prod\":\"ERP\", ");
sb.AppendLine("\"ip\":\"\",");
sb.AppendLine("\"lang\":\"zh_CN\",");
sb.AppendLine("\"acct\":\"tiptop\",");
sb.AppendLine("\"timestamp\":\"20220321123204361\"");
sb.AppendLine(" },");
sb.AppendLine(" \"datakey\":{ ");
sb.AppendLine(" \"EntId\":\"70\", ");
sb.AppendLine(" \"CompanyId\":\"MHC\", ");
sb.AppendLine(" \"g_user\":\"00000\" ");
sb.AppendLine(" },");
sb.AppendLine(" \"service\":{ ");
sb.AppendLine(" \"ip\":\"192.168.0.71\", ");
sb.AppendLine(" \"prod\":\"T100\", ");
sb.AppendLine(" \"id\":\"toptst\", ");
sb.AppendLine(" \"name\":\"Apmt400Get01\" ");
sb.AppendLine(" }, ");
sb.AppendLine(" \"payload\":{ ");
sb.AppendLine(" \"std_data\":{ ");
sb.AppendLine(" \"parameter\":{ ");
sb.AppendLine(" \"pmdadocno\":\"T001\", ");
sb.AppendLine(" \"pmdadocdt\":\"2022/04/20\", ");
sb.AppendLine(" \"items\":[ ");
sb.AppendLine(" { ");
sb.AppendLine(" \"pmdb004\":\"066200003\", ");
sb.AppendLine(" \"pmdb006\":\"100\", ");
sb.AppendLine(" \"pmdb030\":\"2022/04/28\" ");
sb.AppendLine(" }, ");
sb.AppendLine(" { ");
sb.AppendLine(" \"pmdb004\":\"066200004\",");
sb.AppendLine(" \"pmdb006\":\"200\", ");
sb.AppendLine(" \"pmdb030\":\"2022/04/28\" ");
sb.AppendLine(" } ");
sb.AppendLine(" ] ");
sb.AppendLine(" } ");
sb.AppendLine(" } ");
sb.AppendLine(" } ");
sb.AppendLine("}");
return sb.ToString();
}
}
}
2.2 执行以上代码后的结果
三、总结
C#调用T100接口服务的程序有很大改进的地方,我贴出来只是讲一个流程。
毕竟很多开发我们只要知道开发的流程,后续才能慢慢完善,慢慢进步。