四级、六级查询系统研究
3月3日晚上,因为四级考试没过,同学的准考证又找不到了,所以我就都在研究99宿舍的CET查询系统,希望能帮我同学找到他的分数,研究了一晚上虽然有点头绪了,但是始终没有C#写出查询软件(可能是我水平不够的原因吧)!
---------------------------
分析了下99宿舍CET查询系统的源码,发现它是把数据提交到http://cet.99sushe.com/res/js/getscore.html或http://cet.99sushe.com/getscore.html上面,提交的方式(下面列出99宿舍JavaScript的关键代码,非C#)

1 //提交数据的代码
2 var ajax = new Ajax();
3 var param = "id=" + tid + "&vc=novcversion";
4 ajax.Post("http://cet.99sushe.com/res/js//getscore.html",param , search_callback);
5
6 //callback的代码
7 function search_callback(success, responsetext) {
8 if (success) {
9 score = responsetext;
10 if (score.length > 15) {
11 var sn = score.split(',')[5];
12 if (netschoolname != sn) {
13 netschoolname = sn;
14 setTimeout("net_test('"+netschoolname+"')",3000);
15 }
16 }
17 //showscore(score);
18 }
19 else {
20 score = "-1";
21 }
22 }
23 这里是POST的方法
24 Ajax.prototype.Post = function(url, param, callback) {
25 var xmlHttp = Ajax.prototype.GetHttpRequestObject();
26 if (xmlHttp == null) {
27 alert("create ajax error");
28 return;
29 }
30 xmlHttp.onreadystatechange = function() {
31 if (xmlHttp.readyState == RS_COMPLETE) {
32 if (xmlHttp.status == 200) callback(true, xmlHttp.responseText);
33 else callback(false, xmlHttp.responseText);
34 xmlHttp = null;
35 }
36 }
37 xmlHttp.open("POST", url, true);
38 xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=gb2312');
39 xmlHttp.send(Ajax.prototype.EncodeUrlParam(param));
40 }
41
42 //下面是EncodeUrlParam方法
43 Ajax.prototype.EncodeUrlParam = function(param){
44 var params = param.split('&');
45 var rp = "";
46 for(var i = 0;i< params.length;i++){
47 var nv = params[i].split('=');
48 if(rp != "") rp += "&";
49 rp += nv[0] + "=";
50 rp += encodeURIComponent(nv[1]);
51 }
52 return rp;
53 }
上面URL的部分应该就是上文提到的2个地址, 但是我用C#写的代码(关键代码如下)提交上去老是出现417错误,希望高手教教我怎么解决,谢谢!

1 // 要提交表单的URI字符串。
2 string uriString = "http://cet.99sushe.com/getscore.html";
3 // 要提交的字符串数据。
4 string postString = "id=351030092132901&vc=novcversion";
5 // 初始化WebClient
6 WebClient webClient = new WebClient();
7 webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded;charset=gb2312");
8 // 将字符串转换成字节数组
9
10 byte[] postData = Encoding.ASCII.GetBytes(postString);
11 // 上传数据,返回页面的字节数组
12 byte[] responseData = webClient.UploadData(uriString, "get", postData);
13 // 返回的将字节数组转换成字符串(HTML)
14 string srcString = Encoding.UTF8.GetString(responseData);
记得以前有人写过批量查询软件,是用curl 工具构造相应的Referer请求和Post方法去查询成绩,命令行:curl http://cet.99sushe.com/getscore.html -e http://cet.99sushe.com/ -d id=准备证号 -d vc=novcversion http://cet.99sushe.com/getscore.html 但是我试过了好像已经不行了,不知道是不是操作错误!希望高手们提点下!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库