c# class中接口访问的类,使用http方式

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using System.Net;

using Newtonsoft.Json.Linq;

using Newtonsoft.Json;

namespace MIAS_DigitalTool_Platform.Class

{

public class HttpClient

{

/// <summary>

/// Seivice URL

/// </summary>

public string Url { get; set; }

/// <summary>

/// 内容

/// </summary>

public string Content { get; set; }

/// <summary>

/// Cookie,保证登录后,所有访问持有一个Cookie;

/// </summary>

static CookieContainer Cookie = new CookieContainer();

/// <summary>

/// HTTP访问

/// </summary>

public string AsyncRequest()

{

HttpWebRequest httpRequest = HttpWebRequest.Create(Url) as HttpWebRequest;

httpRequest.Method = "POST";

httpRequest.ContentType = "application/json";

httpRequest.CookieContainer = Cookie;

httpRequest.Timeout = 1000 * 60 * 10;//10min

using (Stream reqStream = httpRequest.GetRequestStream())

{

JObject jObj = new JObject();

jObj.Add("format", 1);

jObj.Add("useragent", "ApiClient");

jObj.Add("rid", Guid.NewGuid().ToString().GetHashCode().ToString());

jObj.Add("parameters", Content);

jObj.Add("timestamp", DateTime.Now);

jObj.Add("v", "1.0");

string sContent = jObj.ToString();

var bytes = UnicodeEncoding.UTF8.GetBytes(sContent);

reqStream.Write(bytes, 0, bytes.Length);

reqStream.Flush();

}

using (var repStream = httpRequest.GetResponse().GetResponseStream())

{

using (var reader = new StreamReader(repStream))

{

return ValidateResult(reader.ReadToEnd());

}

}

}

private static string ValidateResult(string responseText)

{

if (responseText.StartsWith("response_error:"))

{

return responseText.TrimStart("response_error:".ToCharArray());

}

return responseText;

}

}

}

如下是实际代码中调用上述类方法:

#region 到金蝶ERP中查询规格型号以作信息比对

Class.HttpClient httpClient = new Class.HttpClient();

httpClient.Url = "http://10.3.10.10:9000/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";

List<object> Parameters = new List<object>();

Parameters.Add("66c541f8cc1e6a");//帐套Id

Parameters.Add("李");//用户名

Parameters.Add("Mis@0123456789");//密码

Parameters.Add(2052);

httpClient.Content = JsonConvert.SerializeObject(Parameters);

var iResult = JObject.Parse(httpClient.AsyncRequest())"LoginResultType".Value<int>();

if (iResult == 1)

{

//todo:验证成功,处理业务

httpClient.Url = "http://10.3.10.10:9000/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc";

//业务对象Id

Parameters.Clear();

String formid = "BD_MATERIAL";//物料列表

Parameters.Add(formid);

//Json字串

string data = "{\"Number\":\"24-1508\"}";

Parameters.Add(data);

httpClient.Content = JsonConvert.SerializeObject(Parameters);

// 发送请求并等待响应

string responseBody = httpClient.AsyncRequest();

// 解析响应体

JObject jsonResponse = JObject.Parse(responseBody);

// 获取嵌套的 result 下的 result 下的 specification 值

JToken specificationToken = jsonResponse"Result""Result""Specification"0"Value";

// 将JToken转换为字符串(如果需要)

string specificationValue = specificationToken.ToString();

if (specificationToken != null)

{

string specification = specificationToken.ToString();

// 处理 specification 值

}

else

{

MessageBox.Show("这个项目号在金蝶中没有找到对应的规格型号信息,请到ERP中确认,以防ERP/PDM系统中信息不同步");return;

}

}

else

{

MessageBox.Show("访问ERP受阻,请联系技术中心 Frank Li 确认此问题");return;

}

#endregion

相关推荐
qq_2518364578 小时前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
Dovis(誓平步青云)8 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
郝学胜-神的一滴8 小时前
AI 编程智能体 03:拆解当下主流智能体能力
开发语言·c++·人工智能·python·程序人生·游戏
言乐68 小时前
Python文字审核模型
开发语言·windows·python·django·pygame
wuyk5559 小时前
Python网络爬虫入门到实战 第02章:HTTP/HTTPS协议超通俗精讲(GET/POST、请求头、响应码、爬虫核心基础)
爬虫·python·http
Cc.Y9 小时前
Java零基础入门:方法(函数)深度掌握
java·开发语言
老王爱玩车9 小时前
工具函数——清空输入缓冲区
c语言·开发语言·学习
奋发向前wcx9 小时前
CSP-J复赛模拟赛1 王晨旭补题 2026.10.2
java·开发语言
周杰伦fans9 小时前
轻量模型高并发推理优化技巧
开发语言·人工智能·c#
Frank_refuel9 小时前
【C++项目】手撕JRpc框架(单机怎么优化到分布式思想)
开发语言·c++