热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#http发送接收xml数据

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Web;usingSystem.Web.Se

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Security.Cryptography;

namespace TaoBaoInterface
{
    public class Service
    {
        public static string TaobaoUrl = "http://110.75.50.103/user/WareHouseReceiveMessage.do";

        /***
        *   测试DSA公钥
        */
       static String strPublicKey = "MIIBtjCCASsGByqGSM44BAEwggEeAoGBAKRQ3ELATnIGJbRJE9+84RER2ULkU7eS"
                        + "zrvX7RF1El0zlv65yI4Qgt9LeU464F6tV42aogHvh5lIe5HoKv0hKM+Am5BgSOSz"
                        + "5f1+SD3NXOaiQfTcSZCOtZhbcZlPDx7OYraISenxHmEAUZoli0n9IscmsCprIJI0"
                        + "/o1A9cnyQWoRAhUApBkCOX0pRTaE6P5s0VjgWW43hnkCgYAOG949Z9DcaRPuyCq0"
                        + "fN7/5IVgIPsqA0vCY0ZWe+PULdfvKg+fLERt2LMYJlksD/KUb4FLgdKtBqI1ggbZ"
                        + "Jdc8lbvgIFzV1XnYkcMJIVobSIAZDVA+2F/uVhj17EiOGWw1Oa+cRP8rDFNkUh2V"
                        + "XNDqncfQr5zA1W/dQg4wu2zb2gOBhAACgYBCvUMmkn8wAliTXcFDn0/ZvO/2J9iO"
                        + "l8FxsyhQu9iiF1OCvmTkT5Rwb3z61hixxi5JO4+aqZszlm8wMkxqOS8IaDYIWQl6"
                        + "/rLV2+9YENEhmIuC3ngce3gZIsayzdxDnzxUqTww8MEV+t3SmWxgLHbTpvXhyFG6"
                        + "DjzLcWRlT6RNtA==";

 

        /***
           测试DSA私钥
        */
       static String strPrivateKey = "MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBAKRQ3ELATnIGJbRJE9+84RER2ULk"
                        + "U7eSzrvX7RF1El0zlv65yI4Qgt9LeU464F6tV42aogHvh5lIe5HoKv0hKM+Am5Bg"
                        + "SOSz5f1+SD3NXOaiQfTcSZCOtZhbcZlPDx7OYraISenxHmEAUZoli0n9IscmsCpr"
                        + "IJI0/o1A9cnyQWoRAhUApBkCOX0pRTaE6P5s0VjgWW43hnkCgYAOG949Z9DcaRPu"
                        + "yCq0fN7/5IVgIPsqA0vCY0ZWe+PULdfvKg+fLERt2LMYJlksD/KUb4FLgdKtBqI1"
                        + "ggbZJdc8lbvgIFzV1XnYkcMJIVobSIAZDVA+2F/uVhj17EiOGWw1Oa+cRP8rDFNk"
                        + "Uh2VXNDqncfQr5zA1W/dQg4wu2zb2gQWAhRGDs9OGMdl9f4Sx/fzUSszlYCm1g==";
       
        ///


        ///
        ///

        /// 请求的url地地址
        /// 请求的xml内容
        ///
        public static string SendAPI(string url,string xml)
        {
            /***
            *   测试DSA公钥
            */
          
            #region 对xml做DSA密钥签名           
            #endregion           
            string formatString = "logistics_interface={0}&data_digest={1}&type=v1.0";
            string postData = string.Format(formatString, HttpUtility.UrlEncode(xml, Encoding.GetEncoding("GBK")), HttpUtility.UrlEncode(DSAEnCryptoService(xml), Encoding.GetEncoding("GBK")));
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] data = encoding.GetBytes(postData);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "Post";
            request.COntentType= "application/x-www-form-urlencoded; charset=GBK";
            request.COntentLength= data.Length;

            //发送数据
            Stream newStream = request.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Close();

            HttpWebResponse respOnseSorce= (HttpWebResponse)request.GetResponse();

            Stream stream = responseSorce.GetResponseStream();
            StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("GBK"));
            string cOntent= reader.ReadToEnd();
            cOntent= Filert(content);
            stream.Close();
            return content;          
        }

        public static string DecodeReponse(string content)
        {

            int start = content.IndexOf("            int end = content.LastIndexOf("");
            int length = end - start + "".Length;
            string res =  content.Substring(start, length);
            return res;
        }

        #region Dirty work
        private static string Filert(string responseHtml)
        {
           
            // ---------------------------------
            // Wait for the closing tag
            // ---------------------------------
            Regex eof = new Regex("", RegexOptions.IgnoreCase);


            string finalHtml = responseHtml.ToString();
            Regex re = null;


            // The title has an id="..." which we need to get rid of
            re = new Regex("", RegexOptions.IgnoreCase);
            finalHtml = re.Replace(finalHtml, new MatchEvaluator(TitleMatch));

            // Replace language="Javascript" with script type="text/Javascript"
            re = new Regex("(?<=script\\s*)(language=\"Javascript\")", RegexOptions.IgnoreCase);
            finalHtml = re.Replace(finalHtml, new MatchEvaluator(JavascriptMatch));

            // If there are still any language="Javascript" are left, delete them
            finalHtml = Regex.Replace(finalHtml, "language=\"Javascript\"", string.Empty, RegexOptions.IgnoreCase);

            // Clean up images. Some images have a border property which is deprecated in XHTML
            re = new Regex("", RegexOptions.IgnoreCase);
            finalHtml = re.Replace(finalHtml, new MatchEvaluator(ImageBorderMatch));

            // Wrap the __VIEWSTATE tag in a div to pass validation
            re = new Regex("()", RegexOptions.IgnoreCase);
            finalHtml = re.Replace(finalHtml, new MatchEvaluator(ViewStateMatch));

            // If __doPostBack is registered, replace the whole function
            if (finalHtml.IndexOf("__doPostBack") > -1)
            {
                try
                {
                    int pos1 = finalHtml.IndexOf("var theform;");
                    int pos2 = finalHtml.IndexOf("theform.__EVENTTARGET", pos1);
                    string methodText = finalHtml.Substring(pos1, pos2 - pos1);
                    string formID = Regex.Match(methodText, "document.forms\\[\"(.*?)\"\\];", RegexOptions.IgnoreCase).Groups[1].Value.Replace(":", "_");

                    finalHtml = finalHtml.Replace(methodText,
                        @"var theform = document.getElementById ('" + formID + "');\r\n\t\t");
                }
                catch
                {
                }
            }

            // Remove the "name" attribute from tags because they are invalid
            re = new Regex("            finalHtml = re.Replace(finalHtml, new MatchEvaluator(FormNameMatch));
            //return finalHtml;

            // Write the formatted HTML back
            byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(finalHtml);
            return System.Text.Encoding.Default.GetString(data);
        }

        //---------------------------------------------------------------------------
        private static string TitleMatch(Match m)
        {
            return m.ToString().Replace(m.Groups[1].Value, string.Empty);
        }

        //---------------------------------------------------------------------------
        private static string JavascriptMatch(Match m)
        {
            return m.ToString().Replace(m.Groups[1].Value, "type=\"text/Javascript\"");
        }

        //---------------------------------------------------------------------------
        private static string ImageBorderMatch(Match m)
        {
            return m.ToString().Replace(m.Groups[1].Value, string.Empty);
        }

        //---------------------------------------------------------------------------
        private static string ViewStateMatch(Match m)
        {
            return string.Concat("

", m.Groups[1].Value, "
");
        }

        //---------------------------------------------------------------------------
        private static string FormNameMatch(Match m)
        {
            return m.ToString().Replace(m.Groups[1].Value, string.Empty);
        }
        #endregion

        ///


        /// 用私钥加密数据
        ///

        ///
        /// 返回的是签名数据
        public static string DSAEnCryptoService(string str)
        {
            DSACryptoServiceProvider dsac = new DSACryptoServiceProvider();
            byte[] privateBytes = null;
            byte[] bytes = Encoding.Default.GetBytes(str); //xml数据

            privateBytes = Convert.FromBase64String(strPrivateKey);

            AsnKeyParser keyParser = new AsnKeyParser(privateBytes);

            dsac.ImportParameters(keyParser.ParseDSAPrivateKey());

            byte[] sign = dsac.SignData(bytes);

            string yy = "";
            foreach (byte bt in sign)
            {

                yy += bt.ToString() + ", ";
            }
            string dd = yy;

            string strsign = Convert.ToBase64String(sign);
            return strsign;

        }


        ///


        /// 用公钥解密数据
        ///

        ///
        /// 返回的是签名数据
        public static bool DSACryptoService(string str, string signstr)
        {
            try
            {
                byte[] bytes = Encoding.Default.GetBytes(str); //xml数据(URL解码以后的)
                byte[] signbytes = Convert.FromBase64String(signstr);  //签名后的数据
                DSACryptoServiceProvider dsac2 = new DSACryptoServiceProvider();
                byte[] publicBytes = null;
                publicBytes = Convert.FromBase64String(strPublicKey);
                AsnKeyParser keyParser1 = new AsnKeyParser(publicBytes);
                dsac2.ImportParameters(keyParser1.ParseDSAPublicKey());
                bool ver = dsac2.VerifyData(bytes, signbytes);
                if (ver)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception e)
            {
                string strlog = str + "| " + signstr + "| " + e.ToString();
                return false;
            }
        }
    }
}


推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 基于Axis、XFire、CXF的webservice客户端调用示例
    本文介绍了如何使用Axis、XFire、CXF等工具来实现webservice客户端的调用,以及提供了使用Java代码进行调用的示例。示例代码中设置了服务接口类、地址,并调用了sayHello方法。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
张芬921_162
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有