用例场景(c#)
您需要替换资源。WebscantestSqlinj配置文件。
csharp
1
使用系统;
2
使用系统.诊断;
3.
使用系统.IO;
4
使用系统.净;
5
使用系统.文本;
6
使用系统.线程;
7
使用Newtonsoft.Json.Linq;
8
名称空间NTOERestApiTest.控制台
9
{
10
公开课程序
11
{
12
private const string RootPath=“http://localhost: 54073 / AppSpiderEnterpriserest / v1 /”;private const string用户名=“wstclient”;
13
private const string密码=“wstclient”;
14
公共静态无效主要(字符串[]arg游戏)
15
{
16
/ /登录
17
var authResult=PostRequest(“身份验证/登录”,字符串.格式("{{name: \"{0}\", password: \"{1}\"}}",用户名,密码));
18
如果(authResult.IsSuccess==零||!authResult.IsSuccess.价值)
19
{
20.
系统.控制台.WriteLine(authResult.ErrorMessage.价值);
21
返回;
22
}
23
字符串标记=authResult.令牌.价值;
24
系统.控制台.WriteLine(“登录成功”。);
25
//使用WebscantestSqlInj查看config是否存在(无法创建两个同名的config)
26
var configsResult=GetRequest(“配置/ getconfigs”,令牌);
27
如果(configsResult.IsSuccess==零||!configsResult.IsSuccess.价值)
28
{
29
系统.控制台.WriteLine(configsResult.ErrorMessage.价值);
30.
返回;
31
}
32
Guid?configId=零;
33
bool isConfigWithWebscantestSqlInjNameExist=假;
34
foreach(动态配置在configsResult.配置)
35
{
36
如果(配置.的名字==“WebscantestSqlInj”)
37
{
38
isConfigWithWebscantestSqlInjNameExist=真正的;
39
configId=配置.Id;
40
系统.控制台.WriteLine("Config with name WebscantestSqlInj found.");
41
打破;
42
}}
43
//如果同名的配置不存在,则创建新的配置
44
如果(!isConfigWithWebscantestSqlInjNameExist)
45
{
46
字符串errorMessage;
47
configId=CreateConfig(令牌,出errorMessage);
48
如果(configId==零)
49
{
50
系统.控制台.WriteLine(errorMessage);
51
返回;
52
}
53
系统.控制台.WriteLine(Config with name WebscantestSqlInj created。);
54
}
55
/ /运行扫描
56
var runScanResult=PostRequest(“扫描/ runscan”,字符串.格式("{{configId \“\”:
57
\“{0}\}},configId),令牌);
58
如果(runScanResult.IsSuccess==零||!runScanResult.IsSuccess.价值)
59
{
60
系统.控制台.WriteLine(runScanResult.ErrorMessage.价值);
61
返回;
62
}
63
var scanId=runScanResult.扫描.Id;
64
系统.控制台.WriteLine(“开始扫描。扫描ID:{0}”,scanId);
65
//等待扫描完成
66
var秒表=新秒表();秒表.开始();
67
bool isScanFinished=假;而(!isScanFinished)
68
{
69
系统.控制台.写("{0}分钟和{1}秒过去了。",
70
秒表.运行.分钟,秒表.运行.秒);
71
系统.控制台.写(“\ r”);
72
线程.睡眠(5000);
73
var isScanFinishedResult=
74
GetRequest(字符串.格式(“扫描/ isscanfinished吗?scanId = {0} ",scanId),令牌);
75
如果(isScanFinishedResult.IsSuccess==零||
76
!isScanFinishedResult.IsSuccess.价值)
77
{
78
系统.控制台.WriteLine(isScanFinishedResult.ErrorMessage.价值);
79
返回;
80
}
81
isScanFinished=isScanFinishedResult.结果;
82
}
83
秒表.停止();
84
系统.控制台.WriteLine();
85
系统.控制台.WriteLine(“扫描完成。”);
86
//检查已完成扫描的报告
87
var scanHasReportResult=GetRequest(字符串.格式(“扫描/ hasreport吗?scanId = {0} ",
88
scanId),令牌);
89
如果(scanHasReportResult.IsSuccess==零||!scanHasReportResult.IsSuccess.价值)
90
{
91
系统.控制台.WriteLine(scanHasReportResult.ErrorMessage.价值);
92
返回;
93
}
94
如果(!scanHasReportResult.结果.价值)
95
{
96
系统.控制台.WriteLine(“扫描完成,没有报告。”);
97
返回;
98
}
99
SaveFile(字符串.格式(“报告/ getreportzip吗?scanid = {0} ",scanId),
One hundred.
“ReportAllFiles.zip”,令牌);
101
系统.控制台.WriteLine("以名称ReportAllFiles.zip保存的报告");
102
}
103
私有静态Guid?CreateConfig(字符串标记,出字符串errorMessage)
104
{
105
令牌);
106
errorMessage=零;
107
var engineGroupsResult=GetRequest(“enginegroup / getenginegroupsforclient”,
108
如果(engineGroupsResult.EngineGroups==零)
109
{
110
errorMessage=engineGroupsResult.ErrorMessage.价值;
111
返回零;
112
}
113
如果(engineGroupsResult.EngineGroups.数==0)
114
{
115
errorMessage=没有分配给当前客户端的引擎组。;
116
返回零;
117
}
118
var engineGroupId=engineGroupsResult.EngineGroups[0].Id;
119
var configJson=字符串.格式(@”{{
120
“DefendEnabled”:真正的,
121
“MonitoringDelay”:0,
122
“MonitoringTriggerScan”:真正的,
123
“Id”:零,
124
“名字”:“WebscantestSqlInj”,
125
“ClientId”:零,
126
“EngineGroupId”:“{0}”,
127
“监控”:真正的,
128
“IsApproveRequired”:假,
129
“Xml”:“{1}”
130
}}",engineGroupId,资源.WebscantestSqlInj/* TODO:替换你的配置
131
字符串(scfg文件)*/);// ', ", \符号必须转义在配置字符串(\',\",\\)
132
var createConfigResult=PostMultipartRequest(“配置/ saveconfig”,“配置”,
133
configJson,令牌);
134
如果(createConfigResult.IsSuccess==零||!createConfigResult.IsSuccess.价值)
135
{
136
errorMessage=createConfigResult.ErrorMessage.价值;
137
返回零;
138
}
139
返回createConfigResult.配置.Id;
140
}
141
私有静态无效SaveFile(字符串url,字符串文件名,字符串标记)
142
{
143
使用(var webClient=新WebClient())
144
{
145
webClient.头[“授权”]=“基本”+令牌;
146
webClient.DownloadFile(RootPath+url,文件名);
147
}
148
}
149
私有静态动态GetRequest(字符串url,字符串标记)
150
{
151
字符串responseStr;
152
试一试
153
{
154
var httpRequest=(HttpWebRequest)WebRequest.创建(RootPath+url);
155
httpRequest.接受=“application / json”;
156
httpRequest.ContentType=“application / json”;
157
httpRequest.方法=“获得”;
158
httpRequest.头[“授权”]=“基本”+令牌;
159
var响应=httpRequest.GetResponse();
160
使用(流数据=响应.GetResponseStream())使用(var读者=新StreamReader(数据))
161
{
162
responseStr=读者.ReadToEnd();
163
}
164
}
165
抓(WebException e)
166
{
167
使用(WebResponse响应=e.响应)
168
{
169
}}
170
使用(流数据=响应.GetResponseStream())
171
使用(var读者=新StreamReader(数据))
172
{
173
responseStr=读者.ReadToEnd();
174
}
175
返回JObject.解析(responseStr);
176
}
177
私有静态动态PostRequest(字符串url,字符串jsonData,字符串标记=""){
178
字符串responseStr;
179
试一试
180
{
181
var httpRequest=(HttpWebRequest)WebRequest.创建(RootPath+url);
182
httpRequest.接受=“application / json”;
183
httpRequest.ContentType=“application / json”;
184
httpRequest.方法=“职位”;
185
httpRequest.头[“授权”]=“基本”+令牌;
186
字符串jsonContent=jsonData;
187
var编码=新ASCIIEncoding();
188
字节[]字节=编码.GetBytes(jsonContent);
189
流newStream=httpRequest.GetRequestStream();
190
newStream.写(字节,0,字节.长度);
191
newStream.关闭();
192
var响应=httpRequest.GetResponse();
193
使用(流数据=响应.GetResponseStream())使用(var读者=新StreamReader(数据))
194
{
195
responseStr=读者.ReadToEnd();
196
}
197
}
198
抓(WebException e)
199
{
200
使用(WebResponse响应=e.响应)
201
{
202
使用(流数据=响应.GetResponseStream())
203
}}
204
使用(var读者=新StreamReader(数据))
205
{
206
responseStr=读者.ReadToEnd();
207
}
208
返回JObject.解析(responseStr);
209
}
210
私有静态动态PostMultipartRequest(字符串url,字符串文件名,字符串
211
fileData,字符串标记="")
212
{
213
字符串responseStr;
214
试一试
215
{
216
换行符+
217
var边界="------------------------"+DateTime.现在.蜱虫;
218
var换行符=环境.换行符;
219
var propFormat=”——“+边界+换行符+
220
“附加项:格式;name = \“{0}\”“+换行符+
221
“{1}”+换行符;
222
var httpRequest=(HttpWebRequest)WebRequest.创建(RootPath+url);
223
httpRequest.接受=“application / json”;
224
httpRequest.ContentType=“多部分/格式;边界= "+边界;
225
httpRequest.方法=“职位”;
226
httpRequest.头[“授权”]=“基本”+令牌;
227
使用(var reqStream=httpRequest.GetRequestStream())
228
{
229
var reqWriter=新StreamWriter(reqStream);
230
var tmp=字符串.格式(propFormat,文件名,fileData);
231
reqWriter.写(tmp);
232
reqWriter.写(”——“+边界+”——“);
233
reqWriter.写(“\ r \ n”);
234
reqWriter.冲洗();
235
}
236
var响应=httpRequest.GetResponse();
237
使用(流数据=响应.GetResponseStream())使用(var读者=新StreamReader(数据))
238
{
239
responseStr=读者.ReadToEnd();
240
}
241
}
242
抓(WebException e)
243
{
244
使用(WebResponse响应=e.响应)
245
{
246
使用(流数据=响应.GetResponseStream())
247
使用(var读者=新StreamReader(数据))
248
{
249
}}
250
}}
251
responseStr=读者.ReadToEnd();
252
}
253
返回JObject.解析(responseStr);
这个页面对你有帮助吗?