Asp.net HTTP提交xml数据,带身份验证
一、背景介绍
公司最近上了一套PLM系统,是美国PTC的,大名鼎鼎的。由于内部业务等方面要实现PLM系统和其他原有系统的数据交互。目前PLM官方提供的解决方案是通过excel导入导出进行数据交互,但考虑到实时性,效率,便捷性等方面,否决掉了这个方案。最初打算采用Webservice的方式,在FlexPLM里面搭建webservice,但官方又给了回应,他们所有的二次开发还从未用到过Webservice,所以实现有难度。最后没办法,终于提出了第三套解决方案,通过HTTP协议提交数据,调用API交互数据。
可能有人问问什么不直接操作数据库?额。。。。。。对于一个操作会涉及18张表的数据库系统,解析相当困难,还是乖乖用API吧,虽然实现起来看似绕了很多弯子,但没办法,老美的软件设计思想和我们就是有差距的。
二、ASP.Net端(发送请求端实现)
①准备XML格式,发送端,接收端协定好xml格式就行,这里省略....
②代码实现
protected string SendRequestwhy(string strXML)
{
string str = "";
//双方协定的XML格式
Encoding encoding = Encoding.UTF8;
//接收页面string strUrl = "http://192.168.0.46:8008/Windchill/rfa/jsp/material/gateway.jsp";
byte[] data = encoding.GetBytes(strXML);
//准备请求...
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(strUrl);
myRequest.Method = "POST";
myRequest.ContentType = "text/xml;charset=utf-8";
myRequest.ContentLength = data.Length;
//身份认证,特别注意,参数用户名,密码
NetworkCredential cred = new NetworkCredential("wcadmin", "wcadmin");
myRequest.Credentials = cred;
//在信息请求头部加入验证信息,不然验证不通过
myRequest.PreAuthenticate = true;
Stream newStream = myRequest.GetRequestStream();
//发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
WebResponse response = myRequest.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.UTF8);
str = sr.ReadToEnd();//接收返回值,返回值可以是xml
resStream.Close();
sr.Close();
return str;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架