webservice实例

基于PI的Webservice发布实例 最近的项目中,接口较多,而Webservice技术是主要实现方式之一。下面以项目中的一个具体实例来体验一下基于PI的Webservice发布。 业务场景 SAP系统实时接收一个外围接口系统(基于Web的电子商务平台)回传的数据。 技术分析 由于同步要求较高 阅读详情

调用方法(无需改动,通用方法):WebServiceHelp.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Web.Services.Description;
using System.CodeDom;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Data;

namespace Tlw.zjxypj.Common
{
   public class WebServiceHelp
    {
        #region  WebServices连接方法
       /// <summary>
       /// 调用webservice方法
       /// </summary>
       /// <param name="url">地址</param>
       /// <param name="methodname">方法名</param>
       /// <param name="args">参数</param>
       /// <returns>结果</returns>
        public object InvokeWebService(string url, string methodname, object[] args)
        {
            return InvokeWebService(url, null, methodname, args);
        }

        public object InvokeWebService(string url, string classname, string methodname, object[] args)
        {
            string @namespace = "EnterpriseServerBase.WebService.DynamicWebCalling";
            if ((classname == null) || (classname == ""))
            {
                classname = GetWsClassName(url);
            }
            try
            {
                //获取WSDL
                WebClient wc = new WebClient();
                Stream stream = wc.OpenRead(url + "?WSDL");
                ServiceDescription sd = ServiceDescription.Read(stream);
                ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
                sdi.AddServiceDescription(sd, "", "");
                CodeNamespace cn = new CodeNamespace(@namespace);

                //生成客户端代理类代码
                CodeCompileUnit ccu = new CodeCompileUnit();
                ccu.Namespaces.Add(cn);
                sdi.Import(cn, ccu);
                CodeDomProvider csc = new CSharpCodeProvider();
                //ICodeCompiler icc = csc.CreateCompiler();

                //设定编译参数
                CompilerParameters cplist = new CompilerParameters();
                cplist.GenerateExecutable = false;
                cplist.GenerateInMemory = true;
                cplist.ReferencedAssemblies.Add("System.dll");
                cplist.ReferencedAssemblies.Add("System.XML.dll");
                cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
                cplist.ReferencedAssemblies.Add("System.Data.dll");

                //编译代理类
                CompilerResults cr = csc.CompileAssemblyFromDom(cplist, ccu);
                if (true == cr.Errors.HasErrors)
                {
                    System.Text.StringBuilder sb = new System.Text.StringBuilder();
                    foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
                    {
                        sb.Append(ce.ToString());
                        sb.Append(System.Environment.NewLine);
                    }
                    throw new Exception(sb.ToString());
                }

                //生成代理实例,并调用方法
                System.Reflection.Assembly assembly = cr.CompiledAssembly;
                Type t = assembly.GetType(@namespace + "." + classname, true, true);
                object obj = Activator.CreateInstance(t);
                System.Reflection.MethodInfo mi = t.GetMethod(methodname);

                if (args == null)
                    return mi.Invoke(obj, null);
                else
                    return mi.Invoke(obj, args);


            }
            catch (Exception ex)
            {
                throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
            }
        }

        private string GetWsClassName(string wsUrl)
        {
            string[] parts = wsUrl.Split('/');
            string[] pps = parts[parts.Length - 1].Split('.');
            return pps[0];
        }
        #endregion
    }
}

调用方法:WebServiceGetInfo.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Serialization;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using System.Data;
using System.IO;
using System.Text;
using System.Configuration;
//调取服务接口。
namespace Tlw.zjxypj.Common
{
    public class WebServiceGetInfo
    {
        /// <summary>
        /// 调取接口得到单点登录验证串
        /// </summary>
        /// <param name="Ojstr">验证码LoginByUserID</param>
        /// <returns></returns>
        public string GetGuid(string Ojstr)
        {
            try
            {
            WebServiceHelp WS = new WebServiceHelp();
            object[] args = new object[1];
            //args[0] = "80567121A52142C0AEE005F91492F674";
            args[0] = Ojstr;
            object result = WS.InvokeWebService("http://xxx/signonwebservice2005/xxx.asmx", null, "LoginByUserID", args);
            return result.ToString();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
            }
        }
        /// <summary>
        /// 调取接口,返回datatable
        /// </summary>
        /// <param name="name">姓名</param>
        /// <param name="id">身份证号</param>
        /// <param name="guid">验证码LoginByUserID</param>
        /// <returns></returns>
        public  DataTable GetWebInfo(string name,string id)
        {
            try
            {
                string str = ConfigurationManager.AppSettings["LoginByUserID"];
                string[] stra = { name, id, GetGuid(str) };
                object[] args = stra;
                WebServiceHelp WS = new WebServiceHelp();
                object result = WS.InvokeWebService("http://xxx/xxx/xxxx/xxxxx.asmx", null, "GetBasePersonInfoListByCondition", args);
                return ReadXmlData(ObjectToSoapXml(result)).Tables[0];
            }
            catch(Exception ex)
            {
                throw new Exception(ex.InnerException.Message, new Exception(ex.InnerException.StackTrace));
            }
        }
        #region 读取XML数据转成DataSet    object转换成XML
        /// <summary>
        /// 读取XML数据转成DataSet
        /// </summary>
        protected DataSet ReadXmlData(string strxml)
        {
            StringReader stream = null;
            XmlTextReader reader = null;
            DataSet ds = new DataSet();
            string strxml1 = "<getCreditInfo>" + strxml + "</getCreditInfo>";
            stream = new StringReader(strxml1);
            reader = new XmlTextReader(stream);
            ds.ReadXml(reader);
            return ds;
        }
        /// <summary>
        /// object转换成XML
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        private static string ObjectToSoapXml(object o)
        {
            XmlSerializer mySerializer = new XmlSerializer(o.GetType());
            MemoryStream ms = new MemoryStream();
            mySerializer.Serialize(ms, o);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(Encoding.UTF8.GetString(ms.ToArray()));
            if (doc.DocumentElement != null)
            {
                return doc.DocumentElement.InnerXml;
            }
            else
            {
                return o.ToString();
            }
        }
        #endregion
    }
}
WebServiceHelper Webservice动态调用代理类,wsdl.exe在bin中,欢迎各位下载使用。 立即下载

相关推荐

WebService操作帮助类

WebServiceHelper WebService操作帮助类 通过代码方式调用WebService 支持POST方式 Get方式 SOAP方式

WebService--基础--02--常用注解

【代码】WebService--基础--02--常用注解。

zhou920786312的博客 994

PT32F030与MT6826S SPI通讯实战:从硬件连接到数据交互全流程解析

本文详细解析了PT32F030与MT6826S通过SPI通讯的全流程,包括硬件连接、电路设计、SPI外设初始化配置以及数据交互协议实现。通过实战案例和代码示例,帮助开发者快速掌握PT32F030与MT6826S的SPI通讯技术,实现精准的角度和速度数据采集。

weixin_29189373的博客 420

WebServiceHelper类

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Configuration; using System.CodeDom; using System.CodeDom

胡耕永的专栏 1万+

K8S证书过期解决办法之替换证书

k8s证书过期解决方案之替换证书

q_hsolucky的博客 1万+

Mamba与iTransformer融合:时间序列预测中的曼巴注意力机制创新实践

本文探讨了Mamba与iTransformer融合在时间序列预测中的创新实践,重点介绍了曼巴注意力机制的设计与优势。通过双路径信息流设计,该方案在保持O(n)复杂度的同时,显著提升了预测精度和训练效率。实验证明,混合架构在电力负荷、气象数据等多变量长序列场景中表现优异,预测误差降低至0.083,内存占用仅4.2GB。

weixin_29292535的博客 219

webservice连接验证用户名密码

1.服务器端代码 @WebService public class CalculateService { public float plus(float x,float y) { return x + y ; } public float minus(float x,float y) { return x - y; } public float multiply...

shizhk_boke 4684

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2988

vs2012 webservice 实例

1.把安装好的VS 打开

蓝创精英团队 1294

HyperLynx(十五)多板仿真

在对话框的“Design file#1”下拉列表中选择“B00,Mainboard”,在其下方的“Reference designators”列表中选择元器件“J1”,然后在“Designfile#2”下拉列表中选择“BO1、RAM1”,在其下方的“Refer ence designators”列表中选择元器件“J1”,单击“Insert”按钮,为这两个元器件建立互连映射。在“Assign Models”对话框中,选择“B00 Motherboard”,将“U16.B12”设置为输出。

小幽余生不加糖 5060

搞定最强大模型Gemini学生订阅,白嫖一年,包教包会

白嫖现在最强大模型

BUG猿的博客 2万+

webservice简单实例

webservice简单实例.

ruyi574812039的专栏 199

OpenClaw实战四|内容创作全流程AI助理:自动撰稿+智能剪辑+多平台发布,一人顶一个内容团队

AI替代的是「写稿、剪辑、发布」这种流水线工作,真正让你解放出来,去做选题、创意、人设、变现这些高价值的事。OpenClaw这套内容创作全流程AI助理,最大的价值不是「帮你发内容」,而是让一个人,拥有一个内容团队的产能。不管是个人博主、小团队,还是企业新媒体,都能用零代码的方式,快速搭建属于自己的自动化内容矩阵。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 589

WebService接口简单的调用实例

WebService接口简单的调用实例 (手机号码归属地实例) 纯属是公司要求,调用一个oa接口,是webService接口,从来没搞过,主要是为了记录下这个实例: 参考了这位大佬的实例写的,因为这位大佬前几步是用小黑板做的,我是用idea生成的,所以我就又整理了一下 我使用的是idea2018.3版本 下面进入正题开始调用: 1、创建好项目之后在项目目录下,创建包,然后点到包右键 点击ok,生成下图那些类,然后把.class文件都删除掉 2、开始编写查询手机号归属地客户端 public class

qq_42904478的博客 7689

RIP协议

一、 Rip简介 早期在unix系统上使用,1988年才发布第一个rip协议标准“RFC1058”,是一种距离矢量(Distance-vector)协议。 1. 特点: 只关心跳数,下一跳,不关心整网拓扑。 基于传闻的路由协议。 2. 场景: 适用于规模小且可靠性要求低的网络环境,部署简单,因为其跳数限制,不适用于大型网络。 3. 工作原理: - 开启RIP发送RIP请求 - 接受请求发出响应...

ledrsnet的博客 8607

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java开发webservice 的完整实例

java实现webservice实例 文章分类:Java编程 今天下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄明白了,现在贴出我的实例步骤,感谢那个博主的同时,与大家共同分享。 一: 首先

maxiaokun55的专栏 763

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

实例讲解C# WebService

本文通过一个实例讲解了C# WebService的编程方法。麻雀虽小,五脏俱全,这个实例非常能说明问题。 1、建立Web服务 (1)在wwwroot目录下建立一个叫做Webservice的目录。 (2)建立下面这样一个文件: using System;         using System.Web.Services; public class AddNumbers : WebS

格物致知 2024

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php webservice实例下载,phpwebservice实例

Java使用SOAP获取webservice实例解析_计算机软件及应用_IT/计算机_专业资料。Java 使用 SOAP 获取 webservice 实例解析 1.webservice 提供方: http://www.webxml.......动态网站开发与全程实例 PHP+MYSQL 作者:聂庆鹏 毛书朋 王志乐 出版:清华大学出版社 2019年1月7日星期一 1 第1章 PHP概述 2019年...

weixin_30026331的博客 218

【WebService】快速创建webservice实例

快速创建webservice实例步骤: 1、建立IMyService接口类: @WebService() public interface IMyService { /** * 加法 * @param a * @param b * @return */ @WebResult(name=&quot;addResult&quot;) publ...

海棠不惜胭脂色,独立蒙蒙细雨中 908

python调用webservice接口实例_Python调用webservice接口

python调用webservice接口,这里我们使用suds包如果没有直接cmd命令安装subs包pip install suds安装成功会有提示成功字样。------------------------------首先导入包先查看一下webservice提供哪些类型及方法,之后我们才知道怎么调用,传哪些参数。from suds.client import Clientfrom suds.tra...

weixin_39628380的博客 275

webservice 接口实例

webservice第三篇【接口开发webservice、CXF框架使用、IDEA下使用webservice、小例子】 实现接口的webservice 服务端 import javax.jws.WebService; /**面向接口的webservice发布方式 * * */ @WebService public interface JobService { publi...

泰坦巨人 1064

webservice实例的应用

webservice实例的应用webservice实例的应用

fxy701的专栏 175

简明教程 C# Webservice实例

通过C# Webservice实例的一个简单实例,了解如何使用C#创建Webservice,建立并部署一个最简单的Web服务 AD: 下面,我们看看如何建立和部署一个最简单的Web服务,通过C# Webservice实例的一个简单实例,了解如何使用C#创建Webservice。 建立Web服务 1.在wwwroot目录下建立一个叫做Webservice的目...

angchanghui2104的博客 111

【实例】C++调用webservice接口

手头有个项目需要调用webserviceji

Demon的专栏 1万+

C#最简单最完整的webservice实例

C#最简单最完整的webservice实例        我做java,但最近接触crm所以必须研究一下C#中的webservice以备后用,其实就是个新手,哈哈,这个实例是我在参考了网上诸多不完整的例子的情况下,自己摸索完成的。期间遇到过一系列的棘手的问题,经过个人努力终于解决了。我把整个步骤都写完整了,以供以后像我这样的C#新手少走弯路,程序很简单,过程有点长,希望有耐心,对于入门

百老讲数据 2万+

java 的webservice开发_Java开发webservice 的完整实例

java实现webservice实例文章分类:Java编程今天下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄明白了,现在贴出我的实例步骤,感谢那个博主的同时,与大家共同分享。一:首先创建个WEB工...

weixin_42519489的博客 523
上一篇: C#关闭后台进程
下一篇: json与泛型互转和json与datatable互转
user2041
博客等级 码龄12年 7粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值