发布时间 : 星期日 文章正式环境下获取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
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
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