`
gstarwd
  • 浏览: 1539082 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Silverlight中调用WebService-发送邮件测试实例

阅读更多

Silverlight中调用WebService-发送邮件测试实例

Silverlight 能够构建强大的企业级应用程序,关键和Silverlight2.0强大数据通信 是分不开的,包括SOAP服务的访问,RESTful服务的访问,以及基 于Http协议和Socket通信等。在Silverlight中一些基本的功能都适用于Http和Https通信。

其中主要特点:

     A:始终允许同域调用

     B:如果正确配置负载有Web服务的Web服务器,可以跨域访问

     C:仅仅支持Get和Post谓词

     D:所有请求都是异步的-这也是SL用户体验最为吸引人一个特点

     E:只有"00确定"和"404为找到"状态可用

我们看到B支持跨域访问,Silverlight默认情况是请求的URL进行严格限制的,只允许访问同一子目录下的URL资源。禁止跨域访问的,例如当前我们在本地的Web程序中引用新浪网提供天气预报服务http://sina.com/service.asmx ,默认情况下会抛出一个异常.

这个异常抛出的主要原因是在完成事件Complete引用的参数为空,解决方案:在需要被访问的站点根目录下添加两个策略文件-两个XML文件 clientaccesspolicy.xml,crossdomain.xml即可,注意两个XML文件最好使用默认的UTF-8编码格式,如果修改在 程序中极易出现错误,且不容易发现.主要是因为请求都是异步的发送客户端的数据格式XML编码就是UTF-8格式。

这是昨天遇到一个问题,下面做一个简单的在Silverlight程序中调用本地WebService(非跨域)实例.

(1)创建WebService并实现WebService:-


<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1         // WebService访问数据
 2        [WebMethod]
 3          public  List < BookEnticy >  GetAllBookEnticy()
 4          {
 5             List < BookEnticy >  getBooklist  =   new  List < BookEnticy >   {
 6               new  BookEnticy {BookId = 120 ,BookName = " 我的非正常生活! " } ,
 7               new  BookEnticy {BookId = 121 ,BookName = " 中央警备司令部 " } ,
 8               new  BookEnticy {BookId = 122 ,BookName = " 警戒线 " }
 9
10             }
;
11              // 导入System.Data.Linq 空间
12             IDbConnection getcon  =   new  SqlConnection            ( " server=local;database=TestLinq;uid=sa;pwd=sa " );
13             DataContext getcontent  =   new  DataContext(getcon);
14
15             GetServerClintDataWS newdata  =   new  GetServerClintDataWS();
16             List < string >  getlist = from getlistinfo  in  newdata.GetAllBookEnticy()
17                                          select getlistinfo.BookName;
18              return  getBooklist;
19         }

(2)Silverlight中引用并调用

选中SL项目右击弹出的菜单选择  添加服务引用,SL应用程序中会自动生成一个文件夹

当添加引用后,自动添加SL程序中对应该服务的本地代理类 ,代理类是基于System.ServiceModel空间种ClintBase构建的,另外一个配置文件 ServiceReferences.ClintConfig是客户端配置文件,用来配置访问服务地址,绑定契约等信息

Silverlight只支持异步调用,调用完成奖触发一个Complete事件,最终将在OnComplete事件中进行数据绑定

根据上面步骤用Silverlight简单发邮件功能:

A:创建WebService并实现:核心代码如下


<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->       [WebMethod]
        
/**/ /// 发送Email
        
/// 参数:fromaddress-发件人   toaddress-收件人  标题-title  content-内容

         public   bool  SendEmail( string  fromaddress,  string  toaddress,  string  title,  string  content)
        
{
            
try
            
{
                MailMessage newmail 
=   new  MailMessage();
                newmail.From 
=   new  MailAddress(fromaddress);
                newmail.To.Add(
new  MailAddress(toaddress)); // 因为可以抄送 对应多人
                newmail.Subject  =  title;
                newmail.Body 
=  content;
                newmail.IsBodyHtml 
=   false ;

                
// use SmtpClint send Email
                SmtpClient getclint  =   new  SmtpClient();
                getclint.EnableSsl 
=   true ;
                getclint.Send(newmail);

                
return   true ;
            }

            
catch  (Exception se)
            
{
                
return   false ;
            }

            
return   false ;
        }

在Asp.net实现发送邮件功能必须引用System.net.Mail空间,发送邮件细节请参考MSDN:http://msdn.microsoft.com/zh-cn/library/system.net.mail.mailmessage.aspx ,WebService 中发送邮件方法总共接受四个参数:FromAddress-发件人  ToAddress-收件人  Title:标题 Body:内容,在建立WebService发送邮件自前需要建立一个邮件服务器,一般使用Gmail可以使用自己的账号,在根目录Web.Config 中配置,详细代码如下:

<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><!-- 配置邮件服务器 发送Emai use Gmail -->
    
< system.net >
        
< mailSettings >
            
< smtp >
                
< network host = " smtp.gmail.com "  port = " 587 "  userName = " ChenkaiHome@gmail.com "  password = ""   />
            
</ smtp >
        
</ mailSettings >
    
</ system.net >

配置完必须在Silverlight中添加服务引用

(2)Silverlight做前台页面:

效果图-(简化版):

页面Silverlight代码:


<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->  < Grid  x:Name ="LayoutRoot"  Background ="Bisque" >
        
< Canvas >
            
< Grid >
                
< Grid.RowDefinitions >
                    
< RowDefinition  Height ="70" ></ RowDefinition >
                    
< RowDefinition  Height ="70" ></ RowDefinition >
                    
< RowDefinition  Height ="80" ></ RowDefinition >
                    
< RowDefinition  Height ="*" ></ RowDefinition >
                
</ Grid.RowDefinitions >
                
                
< Grid.ColumnDefinitions >
                    
< ColumnDefinition  Width ="80" ></ ColumnDefinition >
                    
< ColumnDefinition  Width ="*" ></ ColumnDefinition >
                
</ Grid.ColumnDefinitions >
                
< TextBlock  Text ="收件人:"  Grid.Row ="0"  Grid.Column ="0"  TextAlignment ="Center"  HorizontalAlignment ="Center"  VerticalAlignment ="Center"  FontSize ="14" ></ TextBlock >
                
< TextBox  x:Name ="address"  Grid.Row ="0"  Grid.Column ="1"  Height ="40"  Width ="250"  FontSize ="14"  TextAlignment ="Left"   HorizontalAlignment ="Center"  VerticalAlignment ="Center" >   </ TextBox >
                
< TextBlock  Text ="标  题:"  Grid.Row ="1"  Grid.Column ="0"   FontSize ="14"  TextAlignment ="Center"   HorizontalAlignment ="Center"  VerticalAlignment ="Center" ></ TextBlock >
                
< TextBox  x:Name ="title"  Grid.Row ="1"  Grid.Column ="1"  Height ="40"  Width ="250"  FontSize ="14"  TextAlignment ="Left"  HorizontalAlignment ="Center"  VerticalAlignment ="Center" ></ TextBox >
                
< TextBlock  Text ="内  容:"  Grid.Row ="2"  Grid.Column ="0"   FontSize ="14"   HorizontalAlignment ="Center"  VerticalAlignment ="Center" ></ TextBlock >
                
< TextBox  TextWrapping ="Wrap"  x:Name ="content"  Grid.Row ="2"  Grid.Column ="1" ></ TextBox >
                
< Button  Content ="Send"  Grid.Row ="3"  Grid.Column ="0"   Height ="45"   Click ="Button_Click" ></ Button >
            
</ Grid >
        
</ Canvas >

    
</ Grid >

当点击Send触发事件后台处理代码:


<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->   // send Email
         private   void  Button_Click( object  sender, RoutedEventArgs e)
        {
            
string  fromaddress  =   " dkjay@163.com " ;
            ServiceReference2.SendEmailTestSoapClient getclint 
=   new  TestWebServiceSL.ServiceReference2.SendEmailTestSoapClient();

            getclint.SendEmailCompleted 
+=   new  EventHandler < TestWebServiceSL.ServiceReference2.SendEmailCompletedEventArgs > (getclint_SendEmailCompleted);
            
        }
        
        
void  getclint_SendEmailCompleted( object  sender, TestWebServiceSL.ServiceReference2.SendEmailCompletedEventArgs e)
        {
            
// 判断并提示
             if  (e.Error  !=   null )
            {
                HtmlPage.Window.Alert(
" Send  Suceess! " );
            }
            
else
            {
                HtmlPage.Window.Alert(
" Send Faile! " );
            }   
        }

 

http://en.wiktionary.org/wiki/Special:Search?search=Silverlight%E4%B8%AD%E8%B0%83%E7%94%A8WebService-%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AE%9E%E4%BE%8B%0D%0A%0D%0ASilverlight%E8%83%BD%E5%A4%9F%E6%9E%84%E5%BB%BA%E5%BC%BA%E5%A4%A7%E7%9A%84%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%85%B3%E9%94%AE%E5%92%8CSilverlight2.0%E5%BC%BA%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%80%9A%E4%BF%A1%E6%98%AF%E5%88%86%E4%B8%8D%E5%BC%80%E7%9A%84%EF%BC%8C%E5%8C%85%E6%8B%ACSOAP%E6%9C%8D%E5%8A%A1%E7%9A%84%E8%AE%BF%E9%97%AE%2CRESTful%E6%9C%8D%E5%8A%A1%E7%9A%84%E8%AE%BF%E9%97%AE%EF%BC%8C%E4%BB%A5%E5%8F%8A%E5%9F%BA%E4%BA%8EHttp%E5%8D%8F%E8%AE%AE%E5%92%8CSocket%E9%80%9A%E4%BF%A1%E7%AD%89%E3%80%82%E5%9C%A8Silverlight%E4%B8%AD%E4%B8%80%E4%BA%9B%E5%9F%BA%E6%9C%AC%E7%9A%84%E5%8A%9F%E8%83%BD%E9%83%BD%E9%80%82%E7%94%A8%E4%BA%8EHttp%E5%92%8CHttps%E9%80%9A%E4%BF%A1%E3%80%82%0D%0A%0D%0A%E5%85%B6%E4%B8%AD%E4%B8%BB%E8%A6%81%E7%89%B9%E7%82%B9%3A%0D%0A%0D%0A%20%20%20%20%20A%3A%E5%A7%8B%E7%BB%88%E5%85%81%E8%AE%B8%E5%90%8C%E5%9F%9F%E8%B0%83%E7%94%A8%0D%0A%0D%0A%20%20%20%20%20B%3A%E5%A6%82%E6%9E%9C%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%E8%B4%9F%E8%BD%BD%E6%9C%89Web%E6%9C%8D%E5%8A%A1%E7%9A%84Web%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%B7%A8%E5%9F%9F%E8%AE%BF%E9%97%AE%0D%0A%0D%0A%20%20%20%20%20C%3A%E4%BB%85%E4%BB%85%E6%94%AF%E6%8C%81Get%E5%92%8CPost%E8%B0%93%E8%AF%8D%0D%0A%0D%0A%20%20%20%20%20D%3A%E6%89%80%E6%9C%89%E8%AF%B7%E6%B1%82%E9%83%BD%E6%98%AF%E5%BC%82%E6%AD%A5%E7%9A%84-%E8%BF%99%E4%B9%9F%E6%98%AFSL%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C%E6%9C%80%E4%B8%BA%E5%90%B8%E

评论

相关推荐

    SilverLight 2.0 调用 WebService 视频教程

    SilverLight 2.0 调用 WebService 视频教程 SilverLight 2.0 调用 WebService 视频教程 SilverLight 2.0 调用 WebService 视频教程 SilverLight 2.0 调用 WebService 视频教程

    silverlight-通过-WebService-连接数据库.doc

    在本文档中,我们探讨了如何使用Silverlight通过WebService与数据库进行交互,特别是实现了DataGrid中的数据增删改查功能。Silverlight是一种强大的RIA(Rich Internet Application)开发技术,允许开发者创建具有...

    php调用webservice及myeclipse创建webservice实例

    在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...

    在WinForm程序中调用WebService

    在WinForm应用程序中调用WebService是一项常见的任务,它允许客户端应用程序与远程服务器上的服务进行交互,从而实现数据交换和功能扩展。以下是如何在WinForm中实现这一操作的详细步骤及涉及的相关知识点: 1. **...

    Delphi调用WebService的实例(非常经典)[参考].pdf

    在 Delphi 中调用 WebService 是一种非常经典的实例。下面我们将详细介绍 Delphi 调用 WebService 的相关知识点。 首先, Delphi 调用 WebService 需要了解基本概念。WebService 是一种基于 XML 的远程过程调用...

    基于Silverlight实现调用webservice上传多个文件的源码例子

    本示例“基于Silverlight实现调用webservice上传多个文件的源码”将展示如何在Silverlight应用中通过调用Web服务来处理多文件上传。 首先,我们要理解Silverlight与Web服务的交互机制。Silverlight应用通常运行在...

    VC++中WebService服务的调用

    在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...

    在PB中如何调用WEBSERVICE

    4. **调用WebService**:一旦Web引用添加成功,你就可以在PB代码中实例化代理类,并调用其方法来执行WebService的操作。例如,如果代理类有一个名为`DoSomething`的方法,你可以这样调用: ```cpp Dim wsProxy As ...

    java使用XFire调用webService接口

    在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 ...

    oracle 调用webservice

    本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...

    webservice接口调用实例

    在本实例中,"webservice_client"可能是一个客户端应用程序,用于与服务器端的Web Service进行交互。客户端通常需要完成以下步骤来调用Web Service接口: 1. **获取WSDL文档**:WSDL文件定义了服务的接口,包括操作...

    httpClient调用webservice接口

    ### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...

    ajax和JavaScript分别调用Webservice实例

    在"AJAX调用WebService.doc"中,你将学习到如何创建和使用XMLHttpRequest对象发送HTTP请求到WebService,以及处理返回的数据。 接下来,我们来看JavaScript。JavaScript是一种客户端脚本语言,广泛应用于Web开发,...

    SQL Server调用Webservice示例

    在示例中,"SQL项目调用Webservice示例"可能包含了一个完整的.NET存储过程示例,用于演示如何构建和调用Web Service。可能的结构包括: - 存储过程源代码,展示如何使用`System.Web.Services`命名空间的`WebClient`...

    SqlServer触发器调用WebService

    本节将详细介绍如何在Sql Server中利用触发器来调用WebService。 ##### 3.1 触发器创建示例 根据提供的部分代码,我们可以看到一个具体的例子: ```sql CREATE TRIGGER [dbo].[DingTalkSendOAMsg] ON TableName ...

    VB如何调用WebService

    在探讨“VB如何调用WebService”的主题时,我们首先需要理解几个关键概念:Visual Basic(简称VB),...同时,为了提高代码的可读性和可维护性,建议将WebService调用封装成独立的函数或子程序,方便复用和测试。

    webservice-*.jar共5个jar包

    webservices-api-2.2.jar.zip webservices-extra-2.2.jar.zip webservices-extra-api-2.2.jar.zip webservices-rt-1.2.jar.zip webservices-tools-2.2.0-4....如果还需要其他jar包,请留言留邮箱,如果我有,就免费发送.

    BCB 调用WebService方法及常见问题排查

    - **添加到数据执行保护列表**:通过系统设置将调用WebService的应用程序添加到“数据执行保护”的白名单中。 - 右键点击“我的电脑” -&gt; “属性” -&gt; “高级系统设置” -&gt; “性能” -&gt; “设置” -&gt; “数据执行保护...

    C#_.NET_动态调用webservice的三种方式

    在本文中,我们将讨论如何动态调用WebService的三种方式。在某些情况下,我们可能需要在程序运行期间动态调用一个未知的服务。这可以通过使用.NET Framework的System.Web.Services.Description命名空间来实现。 第...

Global site tag (gtag.js) - Google Analytics