zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    ClickHouse
    SparkSql运行原理详细解析
    Hive优化一
    低代码平台,到底能给企业带来什么?
    观点:BPM已经过时了?
    一个好产品,只是帮用户做好了一件事
    高科技电子行业的信息化怎么做?
    【重要!】告K2老客户书
    移动互联网公司如何将BPM流程管理变身移动化?
    BPM业务流程管理与SAP如何更好集成整合?
  • 原文地址:https://www.cnblogs.com/qidian10/p/2085341.html
Copyright © 2011-2022 走看看