C# 窗体通过调用webapi往U9C系统创建请购单

news2024/9/20 12:38:39

C# 窗体通过调用webapi往U9C系统创建请购单

窗体图片
界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace u9capitest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string sqtoken;
        private async void button1_Click(object sender, EventArgs e)
        {
            var client = new HttpClient();
            var request = new HttpRequestMessage
            {
                Method = HttpMethod.Get,
                RequestUri = new Uri("http://127.0.0.1/u9c/webapi/OAuth2/GetAuthorizeCode?clientid=AP&clientsecret=5cf3d45619a6440699b8aa341d86a146"),//需要用EA账号建立API和Key
            };
            using (var response = await client.SendAsync(request))
            {
                response.EnsureSuccessStatusCode();
                var body = await response.Content.ReadAsStringAsync();
                Getsqm getsqm = JsonConvert.DeserializeObject<Getsqm>(body);
                //MessageBox.Show(getsqm.Data);
                if (getsqm.Data!="")
                {
                    var client1 = new HttpClient();
                    var request1 = new HttpRequestMessage
                    {
                        Method = HttpMethod.Get,
                        RequestUri = new Uri(string.Format("http://127.0.0.1/u9c/webapi/OAuth2/Login?userCode=admin&entcode=01&orgcode=101&code={0}", getsqm.Data)),//userCode替换自己的用户,entcode许可软件上的企业代码,如果只有一个默认是01,orgcode是组织代码自己查

                    };
                    using (var response1 = await client.SendAsync(request1))
                    {
                        response1.EnsureSuccessStatusCode();
                        var body1 = await response1.Content.ReadAsStringAsync();
                        Getsqm getsqm1 = JsonConvert.DeserializeObject<Getsqm>(body1);
                        if (getsqm1.Data!="")
                        {
                            sqtoken = getsqm1.Data;
                        }


                    }

                }
            }
            if (sqtoken!="")
            {
                var client3 = new HttpClient();
                var request3 = new HttpRequestMessage
                {
                    Method = HttpMethod.Post,
                    RequestUri = new Uri("http://127.0.0.1/u9c/webapi/PR/Create"),
                    Headers =
    {
        { "token", sqtoken },
    },
                    Content = new StringContent("[\r\n  {\r\n    \"PRDocType\": \"PR1\",\r\n    \"DocNo\": \"\",\r\n    \"BusinessDate\": \"2024-08-14\",\r\n    \"PRLineDatas\": [\r\n      {\r\n        \"DocLineNo\": \"10\",\r\n        \"ItemCode\": \"31112-00015\",\r\n        \"ReqDept\":\"690000\",\r\n        \"ReqEmployee\":\"20240128\",\r\n        \"TradeUOM\": \"个\",\r\n        \"PriceUOM\": \"个\",\r\n        \"ReqQtyPU\": 10,\r\n        \"ApprovedQtyPU\": 10,\r\n        \"ReqQtyTU\": 10,\r\n        \"ApprovedQtyTU\": 10,\r\n        \"RequiredDeliveryDate\": \"2024-08-14\",\r\n        \"RegOrg\": \"001\"\r\n      }\r\n    ],\r\n    \"OtherID\": \"\"\r\n  }\r\n]")//查看官方得api参数
                    {
                        Headers =
        {
            ContentType = new MediaTypeHeaderValue("application/json")
        }
                    }
                };
                using (var response3 = await client.SendAsync(request3))
                {
                    response3.EnsureSuccessStatusCode();
                    var body2 = await response3.Content.ReadAsStringAsync();
                    //Getsqm getsqm3 = JsonConvert.DeserializeObject<Getsqm>(body2);
                    JObject pasedJson = new JObject();
                    pasedJson = JObject.Parse(body2);
                    JArray dataArray = (JArray)pasedJson["Data"];
                    CreatDate creatDate = new CreatDate();
                    foreach (JObject idatem in dataArray)
                    {
                        if (idatem["IsSucess"].ToString()!="")
                        {
                            creatDate.IsSucess = idatem["IsSucess"].ToString();
                        }
                        if (idatem["Success"].ToString() != "")
                        {
                            creatDate.Success = idatem["Success"].ToString();
                        }
                        if (idatem["OtherID"].ToString() != "")
                        {
                            creatDate.OtherID = idatem["OtherID"].ToString();
                        }
                        if (idatem["ID"].ToString() != "")
                        {
                            creatDate.ID = idatem["ID"].ToString();
                        }
                        if (idatem["Code"].ToString() != "")
                        {
                            creatDate.Code = idatem["Code"].ToString();
                        }
                        if (idatem["ErrorMsg"].ToString() != "")
                        {
                            creatDate.ErrorMsg = idatem["ErrorMsg"].ToString();
                        }

                    }
                    //CreatDate creatDate = JsonConvert<CreatDate>(dataArray);
                    MessageBox.Show(creatDate.Code);
                }
            }


        }
    }
}

工程文件源码
https://download.csdn.net/download/weixin_43050480/89645082

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面试题———分布式篇

目录 1、什么是分布式事务 2、什么是CAP理论 3、为什么分布式系统中无法同时AC 4、什么是BASE理论 5、分布式事务的解决方案有哪些 6、Seata的架构是什么 7、XA模式的工作流程是什么 8、AT模型的工作原理是什么 9、TCC模型的工作原理是什么 1、什么是分布式事务 在分…

Aix 清理 iscsi 残留盘

目录 一、前提概要 二、解决方法 一、前提概要 Aix 环境下挂载 ISCSI 盘&#xff0c;需要结合 LVM 进行挂盘。这个过程比较复杂&#xff0c;在使用过程中极易出现残留。 本篇博客介绍的就是如何清理 Aix 下 ISCSI 的残留。 二、解决方法 主要步骤和需要执行的命令如下面的流…

ModuleNotFoundError: No module named ‘pywin32_bootstrap

ModuleNotFoundError: No module named ‘pywin32_bootstrap 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社…

Prompt Engineering 完整指南

Prompt Engineering 完整指南 Prompt Engineering 是与 AI 模型进行交互的关键技术&#xff0c;通过精心设计的指令&#xff08;prompt&#xff09;引导模型生成高质量的输出。本文将详细介绍 prompt 设计的最佳实践、基本原则以及高级技巧&#xff0c;帮助你在实际应用中最大化…

vscode添加宏定义

1 起因 在用vscode看项目代码时&#xff0c;如果源文件中的代码块被某个宏定义给包裹住了&#xff0c;则在vscode的默认配置下&#xff0c;不会高亮显示这块被包裹住的代码&#xff0c;如下图中229行开始的代码被STM32F40_41xxx所控制&#xff0c;没有高亮显示。 由于STM32F4…

SSH升级至9.8p1

此前写过一个有关升级ssh的帖子&#xff0c;当时的情况是ssh5.3p1 升级到 ssh8.0 p1 下面是链接&#xff1a;https://blog.csdn.net/zhurobert/article/details/103193205?spm1001.2014.3001.5501 此次升级的环境是CentOS-7.6.1810 ssh版本7.4p1 准备好升级包后上传至/home…

Ubuntu 下 NFS服务开启

NFS&#xff08;Network File System&#xff0c;网络文件系统&#xff09;是一种基于TCP/IP传输的网络文件系统协议&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源。简单来说NFS就是一个文件传输的协议&#xff0c;可以用来传输文件。 使用如下命令安装 NFS 服务…

怎样选择开放式耳机好?精选五大实力出众爆款安利!

开放式耳机通过空气传导技术传递声音&#xff0c;不需要插入耳道&#xff0c;这种设计不仅保护了耳朵&#xff0c;还确保了佩戴的稳定性和舒适性。与传统的入耳式耳机相比&#xff0c;开放式耳机有助于保持耳道清洁&#xff0c;并允许用户在享受音乐的同时保持对周围环境的警觉…

Ps:首选项 - 增效工具

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“增效工具” Plugins选项卡允许用户管理 Photoshop 中的插件和扩展功能&#xff0c;通过调整这些设置&#xff0c;用户可以根据自己的需求来扩展 Photoshop 的功能&#xff0c…

前端post传入拿到数据,后端报null,并且能够添加或者编辑成功

检查conterller层注解接到实体类的注解是不是没加&#xff08; RequestBody &#xff09; 后端&#xff1a; 前端&#xff1a; 那么就看注解&#xff0c;因为contrller层有个接值注解&#xff08; RequestBody &#xff09;

Why Does ChatGPT Fall Short in Providing Truthful Answers?

文章目录 题目摘要简介相关工作模型和数据集结果事实性背后的能力提高 QA 的事实性结论 题目 为什么 ChatGPT 无法提供真实的答案&#xff1f; 论文地址:https://arxiv.org/abs/2304.10513 摘要 ChatGPT 等大型语言模型的最新进展已显示出影响人类生活各个方面的巨大潜力。然而…

18.token刷新拦截器

问题 上一篇博客中提到使用redis来存用户的登录信息&#xff0c;解决了session不共享问题。 在拦截器中&#xff0c;重新设置了用户信息的有效期&#xff0c;保证只要用户一直请求就永不过期。但是并不是每个请求都会经过拦截器的&#xff08;因为登录拦截器&#xff0c;不是…

多个文件上传

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

【书生大模型实战营】LMDeploy 量化部署进阶实践

LMDeploy 量化部署进阶实践 【书生大模型实战营】LMDeploy 量化部署进阶实践任务环境将大模型封装为API接口服务以命令行形式连接API服务器以Gradio网页形式连接API服务器 LMDeploy Lite和InternLMkv cacheW4A16 模型量化和部署W4A16 量化 KV cacheKV cache 量化 LMDeploy与Int…

【JavaEE】MyBatis 实战指南:从 JDBC 到高效数据库操作的进阶教程

目录 MyBatis 操作数据库JDBC 操作⽰例回顾什么是MyBatis?MyBatis⼊⻔1. 准备⼯作2. 配置数据库连接字符串3. 写持久层代码4. 单元测试使用MyBatis可能遇到的问题 MyBatis的基础操作打印⽇志参数传递增(Insert)返回主键 删(Delete)改(Update)查(Select)起别名结果映射开启驼峰…

vue使用高德获取当前地区天气

1、收件箱 | 高德控制台 (amap.com) 首先打开高德开放平台注册一下 2、创建一个应用获取到key后面获取天气的时候 请求接口的时候会用到key 2.1.1 创建应用的时候注意类型选成天气 2.1.2 创建完成之后就点添加key 然后选择web服务就行 3、可以调取天气接口 天气查询-基础 API…

https握手过程详解

https握手过程详解 上一篇《HTTPS通讯全过程》中https握手过程实际上还有更多的细节&#xff0c;为什么会这样设计呢&#xff1f;是因为一开始将握手过程时&#xff0c;吧步骤说的太详细会导致更难理解惹。所以我就先在上一篇把部分细节忽略&#xff0c;把原来几步的过程先简化…

洛杉物理服务器怎么样?

洛杉矶作为美国科技和互联网的重要中心&#xff0c;物理服务器的质量通常非常高&#xff0c;可以提供卓越的性能、强大的安全性、多样的配置选项和专业的服务支持。以下是对洛杉物理服务器的详细介绍。 1. 优质的性能 稳定的网络连接&#xff1a;洛杉矶物理服务器位于先进的数据…

CASS11时空版 全新升级支持多版本CAD软件下载License使用

南方数码地形地籍成图软件CASS&#xff0c;经过二十余年的发展&#xff0c;市场和技术积累丰厚&#xff0c;用户遍及国内外测绘地理信息相关行业。软件销量和市场占有率持续领先&#xff0c;是业内应用广&#xff0c;服务优的软件品牌。 南方数码深刻理解信息化测绘的内…

合宙LuatOS生成毫秒级时间戳

合宙Luatos - os操作 os.time()生成时间戳的精度只能达到秒级&#xff0c;在很多联网应用中需要毫秒级的时间戳。 经查看LuatOS-SOC接口文档&#xff0c;发现了解决办法。 socket - 网络接口文档 通过文档&#xff0c;我们只要获取当前数&#xff0c;然后把毫秒数与os.time(…