• Silverlight 调用WebServices


    参考别人的例子,加入跨域访问部分,留作参考.

    WebServices 项目: Service1 类和 Person类 注意因为是独立的Service项目,所以需要加入2个xml文件,实现跨域访问,加在根目录下

    clientaccesspolicy.xml和crossdomain.xml

    复制代码
    public class Service1 : System.Web.Services.WebService
        {

            [WebMethod]
            
    public string HelloWorld()
            {
                
    return "Hello World";
            }

            [WebMethod]
            
    public Person[] GetPeople()
            {
                List
    <Person> People = new List<Person>()
            {
               
    new Person{ Name="Jack",Age=12},
               
    new Person{ Name="Tom",Age=22},
               
    new Person{ Name="Simon",Age=32},
               
    new Person{ Name="Richard",Age=26}
            };

                
    return People.ToArray();
            }

        }

        
    public class Person
        {
            
    public string Name { getset; }
            
    public int Age { getset; }
        }
    复制代码

    clientaccesspolicy.xml

    复制代码
    <?xml version="1.0" encoding="utf-8" ?>
    <access-policy>
      
    <cross-domain-access>
        
    <policy>
          
    <allow-from http-request-headers="*">
            
    <domain uri="*" />
          
    </allow-from>
          
    <grant-to>
            
    <resource path="/" include-subpaths="true"/>
          
    </grant-to>
        
    </policy>
      
    </cross-domain-access>
    </access-policy>
    复制代码

    crossdomain.xml

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      
    <cross-domain-access>
        
    <policy>
          
    <allow-from http-request-headers="*">
            
    <domain uri="*" />
          
    </allow-from>
          
    <grant-to>
            
    <resource path="/" include-subpaths="true"/>
          
    </grant-to>
        
    </policy>
      
    </cross-domain-access>
    </access-policy>
    复制代码

    服务端项目: 添加WebService的引用

    Xaml

    复制代码
    <UserControl x:Class="SLWenServices.MainPage"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable
    ="d"
        d:DesignHeight
    ="300" d:DesignWidth="400">

        
    <StackPanel Width="400" Height="300" Background="Wheat">
            
    <TextBlock Text="通过WebService取得的数据如下" TextAlignment="Center" Foreground="Red" FontSize="18"></TextBlock>
            
    <Button x:Name="btnGetWebService" Width="200" Height="30" Content="获取数据" Click="btnGetWebService_Click"></Button>
            
    <ListBox x:Name="People" Width="300" Height="200" Margin="20">
                           
                
    <ListBox.ItemTemplate>
                    
    <DataTemplate>
                        
    <StackPanel Orientation="Vertical">
                            
    <StackPanel Orientation="Horizontal">
                                
    <TextBlock Text="姓名" Width="100" Foreground="Blue" ></TextBlock>
                                
    <TextBlock Text="年龄" Width="100" Foreground="DarkBlue"></TextBlock>
                            
    </StackPanel>
                            
    <StackPanel Orientation="Horizontal">
                                
    <TextBlock Text="{Binding Name}" Foreground="Red" Width="100" ></TextBlock>
                                
    <TextBlock Text="{Binding Age}" Foreground="Green" Width="100" ></TextBlock>
                            
    </StackPanel>
                        
    </StackPanel>
                    
    </DataTemplate>
                
    </ListBox.ItemTemplate>
            
    </ListBox>
        
    </StackPanel>

    </UserControl>
    复制代码

    C#

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using SLWenServices.MyWebServiceRef;

    namespace SLWenServices
    {
        
    public partial class MainPage : UserControl
        {
            
    public MainPage()
            {
                InitializeComponent();
                
            }
            
    private void btnGetWebService_Click(object sender, RoutedEventArgs e)
            {
                
    //使用WebService从服务器端得到数据并在本地端进行处理
                
                Service1SoapClient client 
    = new Service1SoapClient();
                client.GetPeopleCompleted 
    += new EventHandler<GetPeopleCompletedEventArgs>(client_GetPeopleCompleted);

                client.GetPeopleAsync();
            }

            
    void client_GetPeopleCompleted(object sender, GetPeopleCompletedEventArgs e)
            {
                
    if (e.Error == null)
                {
                    People.ItemsSource 
    = e.Result; //绑定结果到UI的List控件
                }
            }

            
        }
    }
  • 相关阅读:
    SPOJ1812 Longest Common Substring II
    SPOJ LCS Longest Common Substring 和 LG3804 【模板】后缀自动机
    SCOI2016 背单词
    [Usaco2008 Dec]Secret Message 秘密信息
    BZOJ4260,LOJ10051 Nikitosh 和异或
    LOJ10050 The XOR Largest Pair
    POJ3630 Phone List
    [Zjoi2013]丽洁体
    BZOJ3162 独钓寒江雪
    [Jsoi2016]独特的树叶
  • 原文地址:https://www.cnblogs.com/leischen/p/2564424.html
Copyright © 2020-2023  润新知