监听黄金价格变化的任务计划程序

这个任务计划程序是7月中旬写的,现在想起来了就分享下思路和一些代码,讲述下从需求到最后实现的整个过程,实现起来还是比较简单的,遇到几个难点地方也很快摸索通过了,大概花了一个晚上就出来了。当时买了写京东金融的黄金,但是很明显有个问题,我要实时关注黄金的价格,特别影响我的精力,所以我就想能不能有个服务器程序帮我监听价格变化。

大致思路就是首先我们需要一个后台程序能够完成24小时的监听,这里我们使用服务器的任务计划程序,将所需要运行的脚本或者程序添加到任务计程序中即可。然后另一边我们需要一个接口,能够很方便的获得产品的价格变化,我这里当时买的是京东金融APP上的黄金,它的价格和实际API市场所获得的黄金价格还是有些区别,所以如何获得京东金融APP中的黄金价格,这个画个重点,如果获得不了,那我们就退而求其次,选择去API市场买一般的黄金API。

###捕捉京东金融APP中的黄金价格
京东金融APP能显示实时黄金价格,也是靠服务器定时给的接口数据,所以我们需要找到这个接口,如果没有任何验证之类拦截,我们就能顺利无限制的请求到京东金融APP中的黄金价格,这里我们使用Fiddler这个工具,将手机配置WLAN的静态IP,使电脑和手机在同一个共享网络下,如何配置Fiddler监听手机请求(还包括如何配置Fiddler捕捉Https请求),这里可以去网上找一些教程或者我单独写一篇文章来写。我们配置好Fiddler之后,我们用手机打开京东金融APP,我们就会看到很多请求,其中有一条值得我们注意,===> https://ms.jr.jd.com/gw/generic/hj/h5/m/currentGoldPrice ,我们可以看到这个请求没有任何验证,里面的返回值正是我们想要的黄金价格的JSON。

###发送短信功能
刚才我们顺利地获得了黄金价格,那么我还缺少一个轮子,就是关于短信的发送提醒功能,这个在阿里云的市场里面可以买到,几分钱几条,可以满足我们的需求,官方文档说的很清楚,这里只稍微说一下,代码放置在Github中,需要两个比较重要的Dll,aliyun-net-sdk-core.dll和aliyun-net-sdk-core.dll,在API购买的地方会给你身份验证的accessKeyId和accessKeySecret,还需要设置短信模板,短信签名,并且进行审核。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Shared Sub SendMessage(ByVal phoneNumber As String, ByVal price As String, ByVal change As String)
Dim product = "Dysmsapi"
Dim domain = "dysmsapi.aliyuncs.com"
Dim accessKeyId = "accessKeyIdXXXX"
Dim accessKeySecret = "accessKeySecretXXXXX"
Dim profile As IClientProfile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret)
DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain)
Dim acsClient As IAcsClient = New DefaultAcsClient(profile)
Dim request As SendSmsRequest = New SendSmsRequest()
Try
request.PhoneNumbers = phoneNumber
request.SignName = "SignNameXXX"
request.TemplateCode = "TemplateCodeXXX"
request.TemplateParam = "{""name"":""" & change & """,""time"":""" & price & """}"
request.OutId = "21212121211"
Dim SendSmsResponse As SendSmsResponse = acsClient.GetAcsResponse(request)
System.Console.WriteLine(SendSmsResponse.Message)
Catch myException As ServerException
System.Console.WriteLine("Hello World!")
Catch myException As ClientException
System.Console.WriteLine("Hello World!")
End Try
End Sub

###功能和拓展
到此为止我们有了黄金价格和发送短信,那么我们可以将价格存放到数据库或者本地的一个文档中,我们根据当前价格和历史价格的比较来提醒价格的涨跌。
其实这个功能还能写得更完善更好一些,比如:

  1. 加入预期值,用户设置好预期的购买/售卖价格来短信提醒用户;
  2. 现在AI算法特别火,可以建立相应的模型,通过历史价格和当前的美联储/朝鲜/中东的一些新闻等重要影响黄金价格的因素来预期一些未来的黄金价格走势和今年的黄金价格最高&最低点,都是可以的。
------ 本文结束 感谢阅读------

坚持原创技术