用過lr的都知道,我們可以用web_reg_find這個注冊函數判斷某個請求的返回中是否有我們要找的內容,這就是檢查點。
但是,如果正常的情況有多種,該如何斷言呢?
我們可以設置多個檢查點,把每個檢查點獲取到的結果數量相加,如果大於0,就表示請求成功,然后通過if條件,人工判斷事務是否成功。
示例代碼:
Action() { int res = 0; //int int_res = 0; //char * string_res = (char*)calloc(100,sizeof(char)); // 請求存儲空間 //設置檢查點 web_reg_find("Text=\"code\":\"00\"","SaveCount=c00",LAST); web_reg_find("Text=\"code\":\"8016\"","SaveCount=c8016",LAST); web_reg_find("Text=\"code\":\"8017\"","SaveCount=c8017",LAST); //web_reg_find("Text=\"code\":\"8001\"",LAST); //獲取response響應信息 //web_reg_save_param("response","LB=","RB=",LAST); lr_start_transaction("payPause"); web_custom_request("activityHandler", "URL=http://127.0.0.1:8081/payPause", "Method=POST", "Resource=0", "RecContentType=application/json", "Referer=", "Mode=HTTP", "EncType=application/json", "Body={\"tokenId\":\"{tokenId}\",\"cardNo\":\"62010101{userAccount}\"}", LAST); res = atoi(lr_eval_string("{c00}"))+atoi(lr_eval_string("{c8016}"))+atoi(lr_eval_string("{c8017}")); //下面四行是調試信息,int和string需要互轉 //sprintf(string_res,"%d",res); //int轉string //lr_output_message("string_res = %s",string_res); //int_res = atoi(string_res); //string轉int,其實這里不需要轉了,因為res已經是int,這里只是再次體現string如何轉int //lr_output_message("int_res = %d",int_res); if (res > 0){ //lr_output_message("事務成功"); lr_end_transaction("payPause",LR_PASS); } else{ //lr_error_message("事務失敗"); lr_end_transaction("payPause",LR_FAIL); } //lr_convert_string_encoding(lr_eval_string("{response}"),LR_ENC_UTF8,"GBK","result"); //輸出response響應信息 //lr_output_message( "返回response響應信息:%s",lr_eval_string("{result}")); //lr_end_transaction("payPause", LR_AUTO); return 0; }