概要:

    基础知识终于学完了,我今天又从第一篇看到第十篇,发现明白了一些东西,还有忘记了部分东西。呵呵,咱不能猴子掰玉米,学了新的忘记旧的。要经常去复习,去用。这一篇是数据通信部分的第一篇,有些东西没接触过,不要紧,万事开头难。前面也是这么走过来的么。。。

WebClient:

  webClient顾名思义,是用来上传或下载数据的服务。  webClient提供的上传数据常用的有4种:    OpenWrite   返回一个用于将数据发送到资源的  Stream。           UploadData   将字节数组发送到资源并返回包含任何响应的字节数组。           UploadFile   将本地文件发送到资源并返回包含任何响应的字节数组。           UploadValues   将   NameValueCollection   发送到资源并返回包含任何响应的字节数组。  下载的有三种:    DownloadData   从资源下载数据并返回字节数组。           DownloadFile   从资源将数据下载到本地文件。           OpenRead   从资源以   Stream   的形式返回数据。  上面是从网上查来的,不一定对,但我认为已经可以解释清楚WebClient是干什么的了。  这个例子是用client.DownloadStringAsync(地址);来下载数据的。

接口部分:

  using System.Web.Services;提供了    [WebService(Namespace = "http://tempuri.org/")]//提供特性部分        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]//Web服务互操作性规范  一般这些都不要管的,其实我也不太明白这些具体是跟什么的。  此接口继承于IHttpHandler接口,我们要做的就是在声明接口后返回什么样的值。

代码:

  MainPage.xaml代码:
代码

<UserControl x:Class="SilverlightAppDemo12.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" Loaded="UserControl_Loaded">

<Grid Background="#46461F">
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Grid.Column="0" CornerRadius="15"
Width="240" Height="36"
Margin="20 0 0 0" HorizontalAlignment="Left">
<TextBlock Text="书籍列表" Foreground="White"
HorizontalAlignment="Left" VerticalAlignment="Center"
Margin="20 0 0 0"></TextBlock>
</Border>
<ListBox x:Name="Books" Grid.Row="1" Margin="40 10 10 10"
SelectionChanged="Books_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" Height="32"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Grid.Row="2" Grid.Column="0" CornerRadius="15"
Width="240" Height="36" Background="Orange"
Margin="20 0 0 0" HorizontalAlignment="Left">
<TextBlock x:Name="lblPrice" Text="价格:" Foreground="White"
HorizontalAlignment="Left" VerticalAlignment="Center"
Margin="20 0 0 0"></TextBlock>
</Border>
</Grid>
</UserControl>

BookHandler.ashx.cs代码,此文件创立在web的文件夹中:

代码

public class BookHandler : IHttpHandler
{
public static readonly string[] PriceList = new string[] {
"66.00",
"78.30",
"56.50",
"28.80",
"77.00"
};
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
    //主要语句。是此接口提供的返回值
      context.Response.Write(PriceList[Int32.Parse(context.Request.QueryString["No"])]);
}

public bool IsReusable
{
get
{
return false;
}
}

MainPage.xaml.cs代码:
代码

void UserControl_Loaded(object sender, RoutedEventArgs e)
{
List<Book> books = new List<Book>() {
new Book("Professional ASP.NET 3.5"),
new Book("ASP.NET AJAX In Action"),
new Book("Silverlight In Action"),
new Book("ASP.NET 3.5 Unleashed"),
new Book("Introducing Microsoft ASP.NET AJAX")
};

Books.ItemsSource = books;

}

void Books_SelectionChanged(object sender, SelectionChangedEventArgs e)
{//端口49955是设定了的提供此服务的端口
Uri endpoint = new Uri(String.Format("http://localhost:49955/BookHandler.ashx?No={0}", Books.SelectedIndex));

WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

client.DownloadStringAsync(endpoint);
}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
lblPrice.Text = "价格:" + e.Result;
}
else
{
lblPrice.Text = e.Error.Message;
}
}

端口的设定在:.web属性web里

运行:

总结:

  这个数据传输的第一篇看似简单,其实用到了很多的知识,查询了大量资料后才明白他们有什么用。尽管只是将李老师的代码照抄过来,但我相信只要一步步,一点点的学下去,收获是很大的。总目录上一篇:vs2010 学习Silverlight学习笔记(10):数据绑定
下一篇:vs2010 学习Silverlight学习笔记(12):数据与通信之WebRequest

转载于:https://www.cnblogs.com/yaoge/archive/2010/05/16/1736899.html

vs2010 学习Silverlight学习笔记(11):数据与通信之WebClient相关推荐

  1. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  2. vs2010 学习Silverlight学习笔记(8):使用用户控件

    概要: 这个类似于封装控件样式.不过封装的是整个或是多个控件罢了,然后用的时候就可以直接引用过来了. 创建用户控: 这个也很简单,不过有几个地方需要注意下.这个就不照抄了,咱们也自己写一个. 步骤: ...

  3. 一步一步学Silverlight 2系列(12):数据与通信之WebClient

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

  4. vs2010 学习Silverlight学习笔记(15):数据与通信之JSON

    概述: 有段时间没学习了,该继续了.不一定写完就发,有可能最后一起发.这个JSON我以前不太了解,只知道是web传输中的一种格式.今天初步了解一下这篇关于JSON是干什么的,写完后再看看W3C中JSO ...

  5. vs2010 学习Silverlight学习笔记(18):JavaScript

    概要:        此篇主要学习SL中关于JS的应用. 内容: 1使用GetProperty获取脚本对象 对已存在的JS方法调用,比如: function Hello(message) { var ...

  6. 统计学习导论_统计学习导论 | 读书笔记11 | 多项式回归和阶梯函数

    ISLR(7)- 非线性回归分析 多项式回归和阶梯函数 Note Summary: 0.从理想的线性到现实的非线性 1.多项式回归 2.Step Function 3.参考 0. Moving Bey ...

  7. 一步一步学Silverlight 2系列(13):数据与通信之WebRequest

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  8. (16):Silverlight 2 数据与通信之JSON

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  9. SilverLight学习笔记--实际应用(一)(4):手把手建立一个Silverlight应用程序之同步数据校验1...

    现在我们的程序有了添加和删除以及修改功能,下面我们看一看如何让程序具备数据校验功能.我们将用两种方式实现数据的校验,一种是在客户端进行同步校验.另一种是在服务器端进行异步校验.   本篇我们先实现如何 ...

最新文章

  1. 库克喜提 8 亿年终奖,2020 年整体薪酬增长 28%
  2. iOS之深入解析“锁”的底层原理
  3. 基于casperjs、resemble.js实现一个像素对比服务
  4. php strlen 线程安全,浅析PHP中strlen和mb_strlen的区别
  5. anaconda 怎么安装xlrd_Pyinstaller打包,文件太大了怎么办?
  6. PyCharm 中为 Python 项目添加.gitignore文件
  7. 使用Django的models创建mysql数据库
  8. [转]一个计算机专业学生几年的编程经验汇总
  9. oracle 查看主外键约束
  10. 热的感觉是顺经络走的
  11. Echarts实现数据可视化(入门篇)
  12. 操作系统——经典同步问题
  13. airpods版本号_怎么看airpods版本号 苹果airpods查看固件版本教程详解
  14. 基于python的证件照_不到20行实现Python代码即可制作精美证件照
  15. cobbler简单入门
  16. 宋宝华- KVM最初的2小时(KVM从入门到入不了门)
  17. QT_媒体播放器播放Mp3QMediaPlayer
  18. 2021年起重机司机(限桥式起重机)考试题及起重机司机(限桥式起重机)模拟考试
  19. 为什么Move将超越Solidity成为主流编程语言?
  20. MySQL登录时出现 Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) 的原因及解决办法

热门文章

  1. mysql oracle sqlserver分页,三种常用数据库(Oracle、MySQL、SQLServer)的分页之SQLServer分页...
  2. MyBatis框架 基本配置及运行原理
  3. 数据竞赛入门-金融风控(贷款违约预测)二、EDA
  4. Yocto Project - basic - 01 - Quick Start
  5. 浏览器开发重要的参考博客
  6. 电脑壁纸知乎_分享更多美——你一定会喜欢的4K电脑壁纸【011】简约动漫风壁纸...
  7. javascript设计模式_JavaScript 设计模式 学习总结
  8. php中的rand,php rand() 随机数生成的方法介绍
  9. nginx php.ini配置_Nginx下修改php.ini后重新加载配置文件命令
  10. linux安装jdk(以1.6为例)