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