Silverlight 2应用Web Service两例

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://terrylee.blog.51cto.com/342737/82163

概述

我们知道,在Silverlight 2中提供了丰富的网络通信API,包括支持SOAP服务、REST服务、基于HTTP通信、Socket通信等。本文我将通过几个示例来演示如何在Silverlight 2中应用Web Service实现文件上传和电子邮件发送。

使用Web Service上传文件

我将通过一个示例来展示如何使用Web Service向服务器上传文件,首先创建Silverlight项目,并在Web测试项目中添加一个ASP.NET Web Service文件。现在来实现相关的WebMethod,在此方法中,将会接收两个参数:字节数组和文件扩展名,并会在服务器上创建文件,如下代码所示:
public class FileService : WebService
            {
            [WebMethod]
            public int UploadFile(byte[] FileByte, String FileExtention)
            {
            FileStream stream = new FileStream(String.Format(@"D:\example.{0}", FileExtention),FileMode.CreateNew);
            stream.Write(FileByte, 0, FileByte.Length);
            stream.Close();
            return FileByte.Length;
            }
            }
添加一个简单的界面,供用户选择本地文件,我们将在按钮单击单击事件中调用Web Service,如下代码所示:
<Canvas Background="#FF333333">
            <TextBox x:Name="txtFile" Height="30" Width="300" Canvas.Top="120"
            Canvas.Left="30" Style="{StaticResource textBoxStyle}"></TextBox>
            <Button x:Name="btnUpload" Width="60" Content="上 传" Height="30"
            Canvas.Left="340" Canvas.Top="120" Style="{StaticResource buttonStyle}"
            Click="OnUploadClick"></Button>
            <TextBlock x:Name="tblStatus" Canvas.Left="30" Canvas.Top="160"
            FontSize="14" Foreground="White" Text=""></TextBlock>
            </Canvas>
调用Web Service上传文件,此处使用了OpenFileDialog对象弹出择窗口以便选择文件,此对象将选择的文件作为Stream返回,我们把Stream转换为一个字节数据传递给Web Service,如下代码所示:
void OnUploadClick(object sender, RoutedEventArgs e)
            {
            OpenFileDialog openFile = new OpenFileDialog();
            if (openFile.ShowDialog() == DialogResult.OK)
            {
            String fileName = openFile.SelectedFile.Name;
            FileServiceSoapClient client = new FileServiceSoapClient();
            client.UploadFileCompleted += new EventHandler<UploadFileCompletedEventArgs>(OnUploadFileCompleted);
            Stream stream = (Stream)openFile.SelectedFile.OpenRead();
            stream.Position = 0;
            byte[] buffer = new byte[stream.Length + 1];
            stream.Read(buffer, 0, buffer.Length);
            String fileExtention = fileName.Substring(fileName.IndexOf('.') + 1);
            client.UploadFileAsync(buffer, fileExtention);
            }
            }
            void OnUploadFileCompleted(object sender, UploadFileCompletedEventArgs e)
            {
            if (e.Error == null)
            {
            tblStatus.Text = "上传文件成功!";
            }
            }
运行程序后,选择一个文件并上传,如下图所示:
至此,我们就完成了一个使用Web Service上传文件的示例。

使用Web Service发送电子邮件

众所周知,发送电子邮件需要使用SMTP协议,Silverlight中并不支持SMTP通信,但是我们可以借助于Web Service来发送电子邮件。本节将通过一个示例讲解这一内容,最终完成的效果如下图所示:
我们首先添加一个ASP.NET Web Service,并实现WebMethod,此方法将接受四个参数:发件人、收件人、邮件主题以及邮件内容,并使用SmtpClient对象发送邮件,关于SmtpClient的使用,大家可以参考MSDN,它位于System.Net.Mail命名空间下。如下代码所示:
public class EmailService : WebService
            {
            [WebMethod]
            public bool Send(String fromAddress,String toAddress,String subject,String body)
            {
            try
            {
            MailMessage msg = new MailMessage();
            msg.From = new MailAddress(fromAddress);
            msg.To.Add(new MailAddress(toAddress));
            msg.Subject = subject;
            msg.Body = body;
            msg.IsBodyHtml = false;
            SmtpClient smtp = new SmtpClient();
            smtp.EnableSsl = true;
            smtp.Send(msg);
            return true;
            }
            catch
            {
            return false;
            }
            }
            }
使用SmtpClient需要在Web.config文件中配置一下邮件服务器,这里使用Google的服务器,大家可以使用自己的Gmail帐号,如下代码所示:
<system.net>
            <mailSettings>
            <smtp>
            <network host="smtp.gmail.com" port="587" userName="" password="19811218"/>
            </smtp>
            </mailSettings>
            </system.net>
在浏览器中测试Web Service,确保它可以正确的发送邮件。编写一个简单用户界面,如下代码所示:
<Grid x:Name="LayoutRoot" Background="#333333">
            <Grid.RowDefinitions>
            <RowDefinition Height="70"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="200"></RowDefinition>
            <RowDefinition Height="50"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <local:TitleControl Grid.Row="0" Margin="8,8,8,8" Grid.ColumnSpan="2"></local:TitleControl>
            <TextBlock Text="收件人" Grid.Row="1" Style="{StaticResource textBlockStyle}"></TextBlock>
            <TextBlock Text="主 题" Grid.Row="2" Style="{StaticResource textBlockStyle}"></TextBlock>
            <TextBox x:Name="txtToEmailAddress" Grid.Row="1" Grid.Column="1" Width="440" Height="30" HorizontalAlignment="Left"></TextBox>
            <TextBox x:Name="txtSubject" Grid.Row="2" Grid.Column="1" Width="440" Height="30" HorizontalAlignment="Left"></TextBox>
            <TextBox x:Name="txtBody" Grid.Row="3" Grid.ColumnSpan="2" Width="500" HorizontalAlignment="Left" Height="200" Margin="100 0 0 0"></TextBox>
            <Button x:Name="btnSend" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" Content="发 送"
            Style="{StaticResource buttonStyle}" Width="120" Height="30"
            Click="OnSendClick"></Button>
            </Grid>
在Silverlight项目中添加Web Service引用,并编写代码来调用Web Service,相信大家都已经熟悉了该如何调用,如下代码所示:
void OnSendClick(object sender, RoutedEventArgs e)
            {
            // 发送邮件地址
            String fromAddress = "";
            EmailServiceSoapClient client = new EmailServiceSoapClient();
            client.SendCompleted += new EventHandler<SendCompletedEventArgs>(OnSendCompleted);
            client.SendAsync(fromAddress,
            this.txtToEmailAddress.Text,
            this.txtSubject.Text,
            this.txtBody.Text);
            }
            void OnSendCompleted(object sender, SendCompletedEventArgs e)
            {
            if (e.Result)
            {
            HtmlPage.Window.Alert("发送邮件成功!");
            }
            else
            {
            HtmlPage.Window.Alert("发送邮件成功!");
            }
            }
运行后输入相关信息,并发送邮件,如下图所示:
至此我们就完成一个在Silverlight中发送电子邮件的示例,大家如果有兴趣,还可以为其加上更加丰富的功能,如添加抄送人、密送人以及附件等。

本文出自 “TerryLee技术专栏” 博客,请务必保留此出处http://terrylee.blog.51cto.com/342737/82163

转载于:https://www.cnblogs.com/hdjjun/archive/2008/12/24/1361566.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值