前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flex 调用添加了SoapHeader的web service

Flex 调用添加了SoapHeader的web service

作者头像
用户3135539
发布2018-09-12 11:38:59
5240
发布2018-09-12 11:38:59
举报
文章被收录于专栏:

1.NET中撰写需要使用SoapHeader验证的Web Service

代码1:WebService.cs

using System.Web.Services; using System.Web.Services.Protocols;

[WebService(Namespace = "http://www.microsoft.com/")] //名字空间,注意FLEX中调用的时候要手工填写 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]          public class WebService : System.Web.Services.WebService {

         public WebService () {}

public AuthenticationInfo authenticationInfo;

         [WebMethod] [SoapHeader("authenticationInfo")] //为服务添加SoapHeader          public string HelloWorld() {                   if (authenticationInfo == null)  {                            return "验证信息不能为空."                   }                   else{                            if (Authentication.Check(authenticationInfo.username, authenticationInfo.password))  {                                    return "Hello world!"                            }                            else{                                     return "用户名密码验证失败,你没有权力访问此服务。"                            }                   }          } }

//用户密码验证类 public class Authentication {          public static bool Check(string username, string password) {                  return ((username == "user") && (password == "password"));          }         }

代码2:AuthenticationInfo.cs

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;

/// <summary> /// AuthenticationInfo 的摘要说明 /// </summary> public class AuthenticationInfo:System.Web.Services.Protocols.SoapHeader{          public AuthenticationInfo() { }          public AuthenticationInfo(string username ,string password)         {                   this.username = username;                   this.password = password;          }          public string username;          public string password; }

2 在.NET中调用使用了SoapHeader的Web Service

代码3:Form1.cs

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;

namespace WindowsApplication1{          public partial class Form1 : Form{                   public Form1() {                            InitializeComponent();                   }                   private void button1_Click(object sender, EventArgs e){                            localhost.WebService service = new WindowsApplication1.localhost.WebService(); localhost.AuthenticationInfo au = new WindowsApplication1.localhost.AuthenticationInfo();                            au.username = textBox1.Text;                            au.password = textBox2.Text; service.AuthenticationInfoValue = au;                            label3.Text = service.HelloWorld();                   }          } }

3 在Flex调用此Web Service

代码4:SoapHeaderTest.mxml

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontFamily="simsun" fontSize="12"> <mx:Script> <![CDATA[         import mx.rpc.events.FaultEvent;         import mx.rpc.events.ResultEvent; import mx.rpc.soap.SOAPHeader;         private function Invoke():void{ ws.clearHeaders(); //先清理一下 var auinfo:Authentication = new Authentication(txtUser.text,txtPassword.text); //                 ws.addHeader(auinfo); //添加                 ws.HelloWorld(); //调用服务         }         private function wsResult(event:ResultEvent):void{                 lblInformation.text= event.result.toString();         }         private function wsFault(event:FaultEvent):void{                 lblInformation.text= event.message.toString();         } ]]> </mx:Script> <mx:WebService id="ws" wsdl="http://localhost:4443/WebSites/WebService.asmx?WSDL" result="wsResult(event)" fault="wsFault(event)"/> <mx:TextInput id="txtUser" x="98" y="94"/> <mx:TextInput id="txtPassword" x="98" y="124"/> <mx:Label x="29" y="98" text="User:"/> <mx:Label x="29" y="128" text="Password:"/> <mx:Button x="193" y="166" label="Invoke" click="Invoke()"/> <mx:Label x="29" y="213" text="Label" id="lblInformation"/> </mx:Application>

代码5:AuthenticationInfo.as

package{         public class AuthenticationInfo{ //字段名称需和.NET端一致                 public var username:String;                 public var password:String;         } }

代码6:Authentication.as

package{         import mx.rpc.soap.SOAPHeader;

public class Authentication extends SOAPHeader{                 public var username:String;                 public var password:String;                 public function Authentication(user:String,password:String){                         var content:AuthenticationInfo = new AuthenticationInfo();                         content.username = user;                         content.password = password; var qname:QName = new QName("http://www.microsoft.com/","AuthenticationInfo"); super(qname, content);                 }         } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2007-02-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档