加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

不通过“添加引用服务”调用WebService接口

发布时间:2020-12-16 23:18:17 所属栏目:安全 来源:网络整理
导读:? ? ? 有时候,在调用外网的服务时,例如Webservice服务,直接添加引用服务,有时候还要手动更新服务,比较不够智能,如果能只通过传入服务地址和参数就能获取数据,那就最好不过。 ? ? ?以下就是一个例子: public static XElement WebCallRequestFunc(stri

? ? ? 有时候,在调用外网的服务时,例如Webservice服务,直接添加引用服务,有时候还要手动更新服务,比较不够智能,如果能只通过传入服务地址和参数就能获取数据,那就最好不过。

? ? ?以下就是一个例子:

        public static XElement WebCallRequestFunc(string paramXML)
        {
            try
            {
                System.Net.ServicePointManager.DefaultConnectionLimit = 200;
                System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create("*.asmx") as System.Net.HttpWebRequest;//回呼服务地址 
                System.Text.Encoding encoding = System.Text.Encoding.UTF8;//默认编码
                string paras = string.Format("<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:SoapHeaderExt xmlns:h="http://tempuri.org/" xmlns="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><UserToken>{0}</UserToken></h:SoapHeaderExt></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><ArticleGeneration xmlns="http://tempuri.org/"><xml>{1}</xml></ArticleGeneration></s:Body></s:Envelope>","",paramXML);//xml格式参数
                byte[] bs = System.Text.Encoding.UTF8.GetBytes(paras);
                req.Host = "";
                req.Method = "POST";
                req.UserAgent = "Mozilla-Firefox-Spider(Wenanry)";
                req.Timeout = 30000;
                req.Headers.Add("SOAPAction","http://tempuri.org/ArticleGeneration");
                req.Headers.Add("VsDebuggerCausalityData",""); 
                //req.Headers.Add("Expect","100-continue"); 
                //req.CookieContainer = new System.Net.CookieContainer();
                //System.Net.CookieContainer cookie = new System.Net.CookieContainer();//如果用不到Cookie,删去即可  
                req.KeepAlive = true;
                //上面的http头看情况而定,但是下面俩必须加  
                req.ContentType = "text/xml;charset=utf-8";
                req.ContentLength = bs.Length;
                using (System.IO.Stream reqStream = req.GetRequestStream())
                {
                    reqStream.Write(bs,bs.Length);
                    reqStream.Close();
                }
                string responseData = string.Empty;//返回数据
                using (System.Net.HttpWebResponse response = (req.GetResponse() as System.Net.HttpWebResponse))
                { //如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可  
                    #region 读取内容
                    //req.CookieContainer.Add(response.Cookies);
                    System.IO.Stream responseStream = response.GetResponseStream();
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream,encoding))
                    {
                        responseData = reader.ReadToEnd();
                    }
                    if (!string.IsNullOrEmpty(responseData))
                    {
                        //string decsponseData = Server.HtmlDecode(responseData);
                        Regex reg = new Regex("<ArticleGenerationResult>.*</ArticleGenerationResult>",RegexOptions.IgnoreCase);//返回
                        MatchCollection matches = reg.Matches(responseData);
                        XElement xmlDoc = null;
                        if (matches.Count > 0)
                        {
                            xmlDoc = XElement.Parse(matches[0].Value); //如果是xml字符串,则用以下形式
                        }
                        return xmlDoc;
                    }
                    else
                    {
                        return null;
                    }
                    #endregion
                }//using
            }
            catch (Exception ex)
            {
                return null;
            }
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读