编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> Windows Phone -> windows phone 8.1教务在线客户端(后续) -> 正文阅读

[Windows Phone]windows phone 8.1教务在线客户端(后续)

经过了一番折腾,这个wp教务在线算是告一段落了,其实原理很简单,就是post方式访问登陆页面返回cookie,然后带着这个cookie用get方式继续访问你想要访问并取回内容的页面,而且httpclient会默认保存cookie的,这个关键我一开始就没搞清,以至于走了弯路,,
ok,这个项目我只是登陆并且获取了我想要的html内容,至于解析html,可以用正则表达式,等以后有时间再研究吧
下面是源码:

 1 using Windows.UI.Xaml.Controls.Primitives;
 2 using Windows.UI.Xaml.Data;
 3 using Windows.UI.Xaml.Input;
 4 using Windows.UI.Xaml.Media;
 5 using Windows.UI.Xaml.Navigation;
 6 using Windows.Web.Http;
10 namespace App 11 { 15 public sealed partial class MainPage : Page 16 { 17 public MainPage() 18 { 19 this.InitializeComponent(); 20 21 this.NavigationCacheMode = NavigationCacheMode.Required; 22 } 23 29 protected override void OnNavigatedTo(NavigationEventArgs e) 30 { 38 } 39 //点击登陆按钮 40 private async void button_Click(object sender, RoutedEventArgs e) 41 { 42 //这个uri是抓包获得的,就是那个带有post请求的uri 43 var uri = "xxx"; 44 var values = new List<KeyValuePair<string, string>>();
//这个键值对也是抓包获得的,就是你的用户名和密码填上
45 values.Add(new KeyValuePair<string, string>("自己的用户名", "xxxxx")); 46 values.Add(new KeyValuePair<string, string>("自己的密码", "xxxxxx")); 47 string response = await App.httpClientHelper.Post(new Uri(uri), values); 48 //string responsetext = await response.Content.ReadAsStringAsync(); 49 //这个uri是你想获得返回内容的uri 50 var _uri = "你想访问的uri"; 51 string _response = await App.httpClientHelper.Get(new Uri(_uri)); 52 Frame.Navigate(typeof(BlankPage1), _response); 53 } 54 } 55 }


<Page
    x:Class="App.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <Button x:Name="button" Content="Login" Click="button_Click" HorizontalAlignment="Left" Margin="232,292,0,0" VerticalAlignment="Top"/>

        <TextBox x:Name="textBox1" HorizontalAlignment="Left" Margin="201,138,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="166"/>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="43,138,0,0" TextWrapping="Wrap" Text="Name" FontSize="30" VerticalAlignment="Top" Height="39" Width="116"/>
        <TextBox x:Name="passwordBox" HorizontalAlignment="Left" Margin="201,218,0,0" VerticalAlignment="Top" Width="166"/>
        <TextBlock x:Name="textBlock1" HorizontalAlignment="Left" Margin="43,218,0,0" TextWrapping="Wrap" Text="Password" FontSize="22" VerticalAlignment="Top" Height="39" Width="93"/>

    </Grid>
</Page>

这个是个空页面,里面放着所返回的html源码:

using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace App
{
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {
            this.InitializeComponent();
        }

protected override void OnNavigatedTo(NavigationEventArgs e) { textBox.Text = e.Parameter.ToString(); } } }


<Page
    x:Class="App.BlankPage1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="55,69,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="-3.716,-0.387" Height="217" Width="301" BorderThickness="0.1"/>

    </Grid>
</Page>

这是自定义的httpClienthelper类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Web.Http;

namespace App
{
    public class HttpClientHelper
    {
        private HttpClient httpClient;

        public HttpClientHelper()
        {
            httpClient = new HttpClient();

        }

        public async Task<string> Post(Uri uri, IList<KeyValuePair<string, string>> postcontent)
        {
            string responseText = string.Empty;
            HttpResponseMessage response = await httpClient.PostAsync(uri, new HttpFormUrlEncodedContent(postcontent));
            responseText = await response.Content.ReadAsStringAsync();
            return responseText;
        }

        public async Task<string> Get(Uri uri)
        {
            string responseText = string.Empty;
            HttpResponseMessage response = await httpClient.GetAsync(uri);
            responseText = await response.Content.ReadAsStringAsync();
            return responseText;
        }
    }
}

一定别忘了在app.xaml.cs里实例化这个httpClientHelper实例:
public static HttpClientHelper httpClientHelper = new HttpClientHelper();
好了,这只是基本的原理展示,这是我学习windows phone的一个小尝试。
  Windows Phone 最新文章
[UWP] 自定义一个ItemsPanel
WP8.1程序开发中,如何加载本地文件资源或安
UWP 律师信息 MVVM 2.0版本
Win10 FaceAPI小demo开发问题汇总
【转】UWP 捕获全局异常
x:bind不支持样式文件 或 此Xaml文件必须又
WP模拟器修改语言为中文方法
wp仿系统截图
Windows Phone 8 锁屏背景与通知
博客园新闻WP8.1客户端
上一篇文章      下一篇文章      查看所有文章
加:2016-04-18 22:37:29  更:2017-05-17 02:44:39 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 日历 万年历 2019年12日历
2019-12-8 8:38:57
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识