正式环境下获取SessionKey

发布时间 : 星期日 文章正式环境下获取SessionKey更新完毕开始阅读

以上就是使用SessionKey的API工作流程界面,我们下面介绍一下相关的实现代码。 1) 主窗体主要的操作代码:

代码

public partial class Form1 : Form {

private TopJsonRestClient jsonClient; private TopContext context;

private void Form1_Load(object sender, EventArgs e) {

this.winGridView1.ProgressBar = this.toolStripProgressBar1.ProgressBar;

this.winGridView1.AppendedMenu = this.contextMenuStrip1;

jsonClient = new TopJsonRestClient(\com/router/rest\, \, \你的密钥\);

client = GetProductTopClient(\);

xmlClient = new TopXmlRestClient(\m/router/rest\, \, \你的密钥\ }

///

/// 判断是否顺利获取SessionKey ///

///

private bool GetAuthorizeCode() {

string authorizeCode = \;

FrmAuthorized dlg = new FrmAuthorized(); if (dlg.ShowDialog() == DialogResult.OK) {

authorizeCode = dlg.AuthrizeCode; }

if (string.IsNullOrEmpty(authorizeCode)) return false;

context = SysUtils.GetTopContext(authorizeCode); if (context == null) return false;

return true; }

private void BindData() {

if (context == null) {

bool flag = GetAuthorizeCode(); if (!flag) return; }

string sessionKey = context.SessionKey;

////获取用户信息

//UserGetRequest request = new UserGetRequest();

//request.Fields = \pay_account,birthday\

//request.Nick = \

//User user = client.Execute(request, new UserJsonParser

());

//MessageBox.Show(ReflectionUtil.GetProperties(user));

try {

//买入交易

TradesBoughtGetRequest req = new TradesBoughtGetRequest();

req.Fields = \yer_nick,status,orders\;

req.PageNo = 1; req.PageSize = 10;

ResponseList rsp = jsonClient.GetBoughtTrades(req, sessionKey);

this.winGridView1.DataSource = rsp.Content; MessageBox.Show(rsp.Content.Count.ToString());

//卖出交易

TradesSoldGetRequest soldReq = new TradesSoldGetRequest();

soldReq.Fields = \k,buyer_nick,status,orders\;

soldReq.PageNo = 1; soldReq.PageSize = 10;

ResponseList soldRsp = jsonClient.GetSoldTrades(soldReq, sessionKey);

this.winGridView1.DataSource = soldRsp.Content; MessageBox.Show(soldRsp.Content.Count.ToString()); }

catch (TopException ex) {

if (ex.ErrorCode == 26 || ex.ErrorCode == 27) {

if (MessageUtil.ShowYesNoAndError(\过期,您是否需要重新认证\) == DialogResult.Yes) {

bool flag = GetAuthorizeCode(); if (!flag) return;

BindData();//重新刷新 } else {

return;

} } } }

private void btnTest_Click(object sender, EventArgs e) {

BindData(); }

2、用户登陆的窗体,就是一个form窗体加上一个WebBrowser控件,窗体代码如下: 代码

public partial class FrmAuthorized : Form {

///

/// 授权码 ///

public string AuthrizeCode = \;

private string url = \y=12033411\;

public FrmAuthorized() {

InitializeComponent(); }

///

/// 获取HTML页面内制定Key的Value内容 ///

///

public string GetHiddenKeyValue(string html, string key) {

string str = html.Substring(html.IndexOf(key)); str = str.Substring(str.IndexOf(\) + 7); int eindex1 = str.IndexOf(\); int eindex2 = str.IndexOf(\ int eindex = eindex2;

if (eindex1 >= 0 && eindex1 < eindex2) {

eindex = eindex1;

}

return str.Substring(0, eindex); }

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {

if (e.Url.AbsoluteUri == url) {

AuthrizeCode = GetHiddenKeyValue(this.webBrowser1.DocumentText, \);

if (!string.IsNullOrEmpty(AuthrizeCode) && AuthrizeCode.IndexOf(\) >= 0) {

this.DialogResult = DialogResult.OK; this.Close(); } } }

private void FrmAuthorized_Load(object sender, EventArgs e) {

webBrowser1.Navigate(url); } }

这样我们就可以在首次使用API或者SessionKey失效的时候,让商家用户输入账号密码并确认即可,其他使用即可顺利无阻。

是不是有点意思呢,赶快试试吧,说不定带来一些意想不到的收获及创意哦。

主要研究技术:代码生成工具、Visio二次开发、送水管理软件等共享软件开发

转载请注明出处:

撰写人:伍华聪 http://www.iqidi.com

联系合同范文客服:xxxxx#qq.com(#替换为@)