Prechádzať zdrojové kódy

使用参数型上post或get,需要对参数编码为url格式;

Jeff 5 rokov pred
rodič
commit
9d3c627861
2 zmenil súbory, kde vykonal 375 pridanie a 73 odobranie
  1. 279 56
      SATHTTP/SATHTTP/SATHTTP.cpp
  2. 96 17
      SATHTTP/SATHTTP/SATHTTP.h

+ 279 - 56
SATHTTP/SATHTTP/SATHTTP.cpp

@@ -30,12 +30,30 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 	else
 	{
 		// TODO: 在此处为应用程序的行为编写代码。
-		std::string host = "10.118.158.52:8580";//"http://10.118.158.198:8090";
+		//std::string host = "http://10.118.158.52:8580";//"http://10.118.158.198:8090";
+		std::string host = "http://10.118.158.198:8090";
+		SATParameters::STDevice stDevice;
+		stDevice.strStatus = "0";
+		stDevice.strDeviceSerial = "192.168.1.119:5555";
+		stDevice.strHardwareVersion = "MS6488";
+		stDevice.strManu = "MStar";
+		stDevice.strDeviceMac = "";
+		stDevice.strLastJobStartTime = "";
+		stDevice.strLastTimeBreak = "";
+		stDevice.strComments = "";
+		stDevice.strCPU = "";
+		stDevice.strSoftwareVersion = "1522659174";
+		stDevice.strPhoneNumber = "";
+		stDevice.strLastJobFinishTime = "";
+		stDevice.strMemory = "";
+		stDevice.strModel = "Generic Linux on tcl_ms6488_cn_64_n";
+		stDevice.strLastJob = "";
+		stDevice.strLastTimeConnected = "2019-12-16 10:16:01";
+		stDevice.strElectric = "";
 		//////////////////////////////////////////////////////////////////////////
 		SATParameters::STLoginReq stLoginReq;
 		SATParameters::STLoginResp stLoginResp;
 		std::string url = host + "/btc_execute_se/ajaxInteractiveManage!executeLogin.action";
-
 		// 示例值;
 		stLoginReq.strUserName = "superAdmin";
 		stLoginReq.strStatus = "0";
@@ -64,10 +82,6 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 			stLoginResp.nCompanyId,
 			stLoginResp.strRunnerToken.c_str());
 
-		SATParameters::STDevice stDevice;
-		stDevice.strStatus = "0";
-		stDevice.strDeviceSerial = "192.168.1.119:5555";
-
 		// ##########################更新设备信息##############################;
 		SATParameters::STUpdateDeviceReq stUpdateDeviceReq;
 		SATParameters::STUpdateDeviceResp stUpdateDeviceResp;
@@ -91,6 +105,7 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 		stUpdateDeviceReq.strMemory = "8938544KB";
 		stUpdateDeviceReq.strEndTime = "";
 		stUpdateDeviceReq.strCPU = "24.7%";
+		stUpdateDeviceReq.devicelist.push_back(stDevice);
 		if ( UpdateDeviceMessage(url, stUpdateDeviceReq, stUpdateDeviceResp) )
 		{
 			printf("更新设备信息成功:code=%s, msg=%s, str=%s\n",
@@ -103,37 +118,38 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 			printf("更新设备信息失败!\n");
 		}
 
-		// ##########################心跳包机制##############################;
-		SATParameters::STHeartbeatReq stHeartbeatReq;
-		SATParameters::STHeartbeatResp stHeartbeatResp;
-		__if_not_exists(url)
-		{			
-			std::string url = host + "/btc_execute_se/ajaxInteractiveManage!executeHeartbeat.action";
-		}
-		__if_exists(url)
+		while(true)
 		{
-			url = host + "/btc_execute_se/ajaxInteractiveManage!executeHeartbeat.action";
-		}
+			// ##########################心跳包机制##############################;
+			SATParameters::STHeartbeatReq stHeartbeatReq;
+			SATParameters::STHeartbeatResp stHeartbeatResp;
+			__if_not_exists(url)
+			{			
+				std::string url = host + "/btc_execute_se/ajaxInteractiveManage!executeHeartbeat.action";
+			}
+			__if_exists(url)
+			{
+				url = host + "/btc_execute_se/ajaxInteractiveManage!executeHeartbeat.action";
+			}
 
-		// 示例值;
-		stDevice.strStatus = "0";
-		stDevice.strDeviceSerial = "192.168.1.119:5555";
+			// 示例值;
+			stDevice.strStatus = "0";
+			stDevice.strDeviceSerial = "192.168.1.119:5555";
 
-		stHeartbeatReq.strUserName = "superAdmin";
-		stHeartbeatReq.strRunnerMac = "40:16:7e:23:10:53";
-		stHeartbeatReq.devicelist.push_back(stDevice);
-		if ( Heartbeat(url, stHeartbeatReq, stHeartbeatResp) )
-		{
-			printf("登录返回:code=%s, msg=%s, str=%s, portCount=%d, companyid=%d, runnertoken=%s\n",
-				stLoginResp.strCode.c_str(),
-				stLoginResp.strMessage.c_str(),
-				stLoginResp.strStr.c_str(),
-				stLoginResp.nPortCount,
-				stLoginResp.nCompanyId,
-				stLoginResp.strRunnerToken.c_str());
+			stHeartbeatReq.strUserName = "superAdmin";
+			stHeartbeatReq.strRunnerMac = "40:16:7e:23:10:53";
+			stHeartbeatReq.devicelist.push_back(stDevice);
+			if ( Heartbeat(url, stHeartbeatReq, stHeartbeatResp) )
+			{
+				printf("登录返回:code=%s, msg=%s, str=%s\n",
+					stHeartbeatResp.strCode.c_str(),
+					stHeartbeatResp.strMessage.c_str(),
+					stHeartbeatResp.strStr.c_str());
+			}
+
+			Sleep(3000);
 		}
 		
-		
 	}
 
 	system("pause");
@@ -178,7 +194,7 @@ SATHTTP_API int Login(std::string url, const SATParameters::STLoginReq &stLoginR
 
 	char *pText = cJSON_Print(pRoot);
 	std::string post_data = "requestMsg=";
-	post_data.append(pText, strlen(pText));
+	post_data.append(CharEncoding::EnCode_UTF8URL(pText));
 
 	// 释放堆内存;
 	if (pText)
@@ -221,12 +237,12 @@ SATHTTP_API int Login(std::string url, const SATParameters::STLoginReq &stLoginR
 							stLoginResp.nPortCount = cJSON_GetObjectItem(pObj, "portCount") ? cJSON_GetObjectItem(pObj, "portCount")->valueint : -1;
 							stLoginResp.nCompanyId = cJSON_GetObjectItem(pObj, "companyId") ? cJSON_GetObjectItem(pObj, "companyId")->valueint : -1;
 							stLoginResp.strRunnerToken = cJSON_GetObjectItem(pObj, "runnerToken") ? cJSON_GetObjectItem(pObj, "runnerToken")->valuestring : "";
-							// 释放内存;
-							cJSON_Delete(pRoot);
-
-							// 返回结果;
-							return TRUE;
 						}
+
+						// 释放内存;
+						cJSON_Delete(pRoot);
+						// 返回结果;
+						return TRUE;
 					}
 				}
 
@@ -274,6 +290,21 @@ SATHTTP_API int UpdateDeviceMessage(std::string url, const SATParameters::STUpda
 				{
 					ASSERT(cJSON_AddStringToObject(pObj, "status", it->strStatus.c_str()));
 					ASSERT(cJSON_AddStringToObject(pObj, "deviceSerial", it->strDeviceSerial.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "hardwareVersion", it->strHardwareVersion.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "manu", it->strManu.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "deviceMac", it->strDeviceMac.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "lastJobStartTime", it->strLastJobStartTime.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "lastTimeBreak", it->strLastTimeBreak.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "comments", it->strComments.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "cpu", it->strCPU.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "softwareVersion", it->strSoftwareVersion.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "phoneNumber", it->strPhoneNumber.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "lastJobFinishTime", it->strLastJobFinishTime.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "memory", it->strMemory.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "model", it->strModel.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "lastJob", it->strLastJob.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "lastTimeConnected", it->strLastTimeConnected.c_str()));
+					ASSERT(cJSON_AddStringToObject(pObj, "electric", it->strElectric.c_str()));
 
 					cJSON_AddItemToObject(pDeviceList, "", pObj);
 				}
@@ -286,7 +317,7 @@ SATHTTP_API int UpdateDeviceMessage(std::string url, const SATParameters::STUpda
 
 	char *pText = cJSON_Print(pRoot);
 	std::string post_data = "requestMsg=";
-	post_data.append(pText, strlen(pText));
+	post_data.append(CharEncoding::EnCode_UTF8URL(pText));
 
 	// 释放堆内存;
 	if (pText)
@@ -302,14 +333,6 @@ SATHTTP_API int UpdateDeviceMessage(std::string url, const SATParameters::STUpda
 	CURLcode curlCode = CURLE_OK;
 	if ( CURLE_OK == curl.Initialize() )
 	{
-		//curl.SetHeaders("Content-Type: application/json");
-		curl.SetHeaders("Accept: */*");
-		curl.SetHeaders("Connection: Keep-Alive");
-		//curl.SetHeaders("Accept-Encoding: gzip, deflate");
-		curl.SetHeaders("user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-		//post_data = CharEncoding::EnCode_UTF8URL(post_data.c_str());
-		//post_data = CharEncoding::EnCode_UNICODEURL(post_data.c_str());
-		//post_data = CharEncoding::EnCode_GB2312URL(post_data.c_str());
 		if (_tcsstr(url.c_str(), "https://") || _tcsstr(url.c_str(), "HTTPS://") )
 			curlCode = curl.Posts(url, post_data, reponse);
 		else
@@ -334,15 +357,13 @@ SATHTTP_API int UpdateDeviceMessage(std::string url, const SATParameters::STUpda
 						cJSON *pObj = cJSON_GetObjectItem(pMsg, "data");
 						if (pObj != NULL)
 						{
-							//stLoginResp.nPortCount = cJSON_GetObjectItem(pObj, "portCount") ? cJSON_GetObjectItem(pObj, "portCount")->valueint : -1;
-							//stLoginResp.nCompanyId = cJSON_GetObjectItem(pObj, "companyId") ? cJSON_GetObjectItem(pObj, "companyId")->valueint : -1;
-							//stLoginResp.strRunnerToken = cJSON_GetObjectItem(pObj, "runnerToken") ? cJSON_GetObjectItem(pObj, "runnerToken")->valuestring : "";
-							// 释放内存;
-							cJSON_Delete(pRoot);
-
-							// 返回结果;
-							return TRUE;
+							
 						}
+
+						// 释放内存;
+						cJSON_Delete(pRoot);
+						// 返回结果;
+						return TRUE;
 					}
 				}
 
@@ -394,7 +415,7 @@ SATHTTP_API int Heartbeat(std::string url, const SATParameters::STHeartbeatReq &
 
 	char *pText = cJSON_Print(pRoot);
 	std::string post_data = "requestMsg=";
-	post_data.append(pText);
+	post_data.append(CharEncoding::EnCode_UTF8URL(pText));
 
 	// 释放堆内存;
 	if (pText)
@@ -562,5 +583,207 @@ SATHTTP_API int Heartbeat(std::string url, const SATParameters::STHeartbeatReq &
 		}
 	}
 
+	return FALSE;
+}
+
+SATHTTP_API int SetResult(std::string url, const SATParameters::STNotifyJobStartReq &stNotifyJobStartReq, SATParameters::STNotifyJobStartResp &stNotifyJobStartResp)
+{
+	// 转化为Json;
+	cJSON *pRoot = cJSON_CreateObject();
+	if ( pRoot == NULL )
+	{
+		return -1;
+	}
+
+	ASSERT(cJSON_AddStringToObject(pRoot, "sysCode", ""));
+	ASSERT(cJSON_AddStringToObject(pRoot, "function", ""));
+	cJSON *pData = cJSON_CreateObject();
+	if ( pData )
+	{
+		ASSERT(cJSON_AddStringToObject(pData, "instanceId", stNotifyJobStartReq.strInstanceId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "signalImageUrl", stNotifyJobStartReq.strSignalImageUrl.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "deviceId", stNotifyJobStartReq.strDeviceId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "taskId", stNotifyJobStartReq.strTaskId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "executeId", stNotifyJobStartReq.strExecuteId.c_str()));
+				
+		// 添加到根结点中;
+		cJSON_AddItemToObject(pRoot, "data", pData);
+	}
+
+	char *pText = cJSON_Print(pRoot);
+	std::string post_data = "requestMsg=";
+	post_data.append(CharEncoding::EnCode_UTF8URL(pText));
+
+	// 释放堆内存;
+	if (pText)
+		delete pText;
+	pText = NULL;
+
+	if ( pRoot )
+		cJSON_Delete(pRoot);
+	pRoot = NULL;		
+
+	CCurlClient curl;
+	std::string reponse;	
+	CURLcode curlCode = CURLE_OK;
+	if ( CURLE_OK == curl.Initialize() )
+	{
+		if (_tcsstr(url.c_str(), "https://") || _tcsstr(url.c_str(), "HTTPS://") )
+			curlCode = curl.Posts(url, post_data, reponse);
+		else
+			curlCode = curl.Post(url, post_data, reponse);
+
+		if ( curlCode == CURLE_OK )
+		{
+			reponse = CharEncoding::DeCode_URLUTF8(reponse.c_str());
+
+			// 解析返回值;
+			pRoot = cJSON_Parse(reponse.c_str());
+			if (pRoot != NULL)
+			{
+				cJSON *pMsg = cJSON_GetObjectItem(pRoot, "responseMsg");
+				if ( pMsg )
+				{
+					stNotifyJobStartResp.strCode = cJSON_GetObjectItem(pMsg, "code") ? cJSON_GetObjectItem(pMsg, "code")->valuestring : "";
+					stNotifyJobStartResp.strMessage = cJSON_GetObjectItem(pMsg, "message") ? cJSON_GetObjectItem(pMsg, "message")->valuestring : "";
+					stNotifyJobStartResp.strStr = cJSON_GetObjectItem(pMsg, "str") ? (cJSON_GetObjectItem(pMsg, "str")->valuestring ? cJSON_GetObjectItem(pMsg, "str")->valuestring : "") : "";
+					if ( stNotifyJobStartResp.strCode == "00" )
+					{				
+						cJSON *pObj = cJSON_GetObjectItem(pMsg, "data");
+						if (pObj != NULL)
+						{
+							
+						}
+
+						// 释放内存;
+						cJSON_Delete(pRoot);
+						// 返回结果;
+						return TRUE;
+					}
+				}
+
+				// 错误产生,可输出msg方便查询;
+				cJSON_Delete(pRoot);	
+			}
+		}
+	}
+
+	return FALSE;
+}
+
+SATHTTP_API int SetResultList(std::string url, const SATParameters::STJobProcessReq &stJobProcessReq, SATParameters::STJobProcessResp &stJobProcessResp)
+{
+	// 转化为Json;
+	cJSON *pRoot = cJSON_CreateObject();
+	if ( pRoot == NULL )
+	{
+		return -1;
+	}
+
+	ASSERT(cJSON_AddStringToObject(pRoot, "sysCode", "Execute"));
+	ASSERT(cJSON_AddStringToObject(pRoot, "function", "setResultList"));
+	cJSON *pData = cJSON_CreateObject();
+	if ( pData )
+	{
+		ASSERT(cJSON_AddStringToObject(pData, "result_state", stJobProcessReq.strResultState.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_scene", stJobProcessReq.strCaseScene.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_step", stJobProcessReq.strCaseStep.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "apkMd5", stJobProcessReq.strApkMD5.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "crash_time", stJobProcessReq.strCrashTime.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "runner_id", stJobProcessReq.strRunnerId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "cpu_info", stJobProcessReq.strCPUInfo.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "runnedActionNameList", stJobProcessReq.strRunnedActionNameList.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "artificial_result", stJobProcessReq.strArtificialResult.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "artificial_modify", stJobProcessReq.strArtificialModify.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "runner_name", stJobProcessReq.strRunnerName.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "task_type", stJobProcessReq.strTaskType.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_repeat", stJobProcessReq.strCaseRepeat.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "application_group", stJobProcessReq.strApplicationGroup.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "instanceId", stJobProcessReq.strInstanceId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_id", stJobProcessReq.strCaseId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "progress", stJobProcessReq.strProgress.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "result_message", stJobProcessReq.strReusltMessage.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "job_repeat", stJobProcessReq.strJobRepeat.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "screenshot", stJobProcessReq.strScreenShot.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "start_time", stJobProcessReq.strStartTime.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "crash_number", stJobProcessReq.strCrashNumber.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_name", stJobProcessReq.strCaseName.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "failed_reason", stJobProcessReq.strFailedReason.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "img_name", stJobProcessReq.strImgName.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "case_index", stJobProcessReq.strCaseIndex.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "device_id", stJobProcessReq.strDeviceId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "scene_index", stJobProcessReq.strSceneIndex.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "task_id", stJobProcessReq.strTaskId.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "analysis", stJobProcessReq.strAnalysis.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "device_name", stJobProcessReq.strDevnceName.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "info_type", stJobProcessReq.strInfoType.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "memory_info", stJobProcessReq.strMemoryInfo.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "end_time", stJobProcessReq.strEndTime.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "round_number", stJobProcessReq.strRoundNumber.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "result_type", stJobProcessReq.strResultType.c_str()));
+		ASSERT(cJSON_AddStringToObject(pData, "operation_step", stJobProcessReq.strOperationStep.c_str()));
+
+		// 添加到根结点中;
+		cJSON_AddItemToObject(pRoot, "data", pData);
+	}
+
+	char *pText = cJSON_Print(pRoot);
+	std::string post_data = "requestMsg=";
+	post_data.append(CharEncoding::EnCode_UTF8URL(pText));
+
+	// 释放堆内存;
+	if (pText)
+		delete pText;
+	pText = NULL;
+
+	if ( pRoot )
+		cJSON_Delete(pRoot);
+	pRoot = NULL;		
+
+	CCurlClient curl;
+	std::string reponse;	
+	CURLcode curlCode = CURLE_OK;
+	if ( CURLE_OK == curl.Initialize() )
+	{
+		if (_tcsstr(url.c_str(), "https://") || _tcsstr(url.c_str(), "HTTPS://") )
+			curlCode = curl.Posts(url, post_data, reponse);
+		else
+			curlCode = curl.Post(url, post_data, reponse);
+
+		if ( curlCode == CURLE_OK )
+		{
+			reponse = CharEncoding::DeCode_URLUTF8(reponse.c_str());
+
+			// 解析返回值;
+			pRoot = cJSON_Parse(reponse.c_str());
+			if (pRoot != NULL)
+			{
+				cJSON *pMsg = cJSON_GetObjectItem(pRoot, "responseMsg");
+				if ( pMsg )
+				{
+					stJobProcessResp.strCode = cJSON_GetObjectItem(pMsg, "code") ? cJSON_GetObjectItem(pMsg, "code")->valuestring : "";
+					stJobProcessResp.strMessage = cJSON_GetObjectItem(pMsg, "message") ? cJSON_GetObjectItem(pMsg, "message")->valuestring : "";
+					stJobProcessResp.strStr = cJSON_GetObjectItem(pMsg, "str") ? (cJSON_GetObjectItem(pMsg, "str")->valuestring ? cJSON_GetObjectItem(pMsg, "str")->valuestring : "") : "";
+					if ( stJobProcessResp.strCode == "00" )
+					{				
+						cJSON *pObj = cJSON_GetObjectItem(pMsg, "data");
+						if (pObj != NULL)
+						{
+							
+						}
+
+						// 释放内存;
+						cJSON_Delete(pRoot);
+						// 返回结果;
+						return TRUE;
+					}
+				}
+
+				// 错误产生,可输出msg方便查询;
+				cJSON_Delete(pRoot);	
+			}
+		}
+	}
+
 	return FALSE;
 }

+ 96 - 17
SATHTTP/SATHTTP/SATHTTP.h

@@ -23,6 +23,21 @@ namespace SATParameters{
 	typedef struct __ST_DEVICE__{
 		std::string strStatus;
 		std::string strDeviceSerial;
+		std::string strHardwareVersion;
+		std::string strManu;
+		std::string strDeviceMac;
+		std::string strLastJobStartTime;
+		std::string strLastTimeBreak;
+		std::string strComments;
+		std::string strCPU;
+		std::string strSoftwareVersion;
+		std::string strPhoneNumber;
+		std::string strLastJobFinishTime;
+		std::string strMemory;
+		std::string strModel;
+		std::string strLastJob;
+		std::string strLastTimeConnected;
+		std::string strElectric;
 	}STDevice, *pSTDevice;
 
 	typedef struct __ST_RESPONE__
@@ -166,30 +181,95 @@ namespace SATParameters{
 	typedef struct __ST_HEARTBEAT_RESP__:__ST_RESPONE__{
 		std::vector<STTask> vtTask;
 	}STHeartbeatResp, *pSTHeartbeatResp;
+
+	//////////////////////////////////////////////////////////////////////////
+	// 4、通知SAT任务开始;
+	typedef struct __ST_NOTIFY_JOB_START_REQ__
+	{
+		std::string strInstanceId;
+		std::string strSignalImageUrl;
+		std::string strDeviceId;
+		std::string strTaskId;
+		std::string strExecuteId;
+	}STNotifyJobStartReq, *pSTNotifyJobStartReq;
+
+	typedef struct __ST_NOTIFY_JOB_START_RESP__:__ST_RESPONE__
+	{
+		
+	}STNotifyJobStartResp, *pSTNotifyJobStartResp;
+
+	//////////////////////////////////////////////////////////////////////////
+	// 5、SetResultList;
+	typedef struct __ST_JOB_PROCESS_REQ__
+	{
+		std::string strResultState;
+		std::string strCaseScene;
+		std::string strCaseStep;
+		std::string strApkMD5;
+		std::string strCrashTime;
+		std::string strRunnerId;
+		std::string strCPUInfo;
+		std::string strRunnedActionNameList;
+		std::string strArtificialResult;
+		std::string strArtificialModify;
+		std::string strRunnerName;
+		std::string strTaskType;
+		std::string strCaseRepeat;
+		std::string strApplicationGroup;
+		std::string strInstanceId;
+		std::string strCaseId;
+		std::string strProgress;
+		std::string strReusltMessage;
+		std::string strJobRepeat;
+		std::string strScreenShot;
+		std::string strStartTime;
+		std::string strCrashNumber;
+		std::string strCaseName;
+		std::string strFailedReason;
+		std::string strImgName;
+		std::string strCaseIndex;
+		std::string strDeviceId;
+		std::string strSceneIndex;
+		std::string strTaskId;
+		std::string strAnalysis;
+		std::string strDevnceName;
+		std::string strInfoType;
+		std::string strMemoryInfo;
+		std::string strEndTime;
+		std::string strRoundNumber;
+		std::string strResultType;
+		std::string strOperationStep;
+	}STJobProcessReq, *pSTJobProcessReq;
+
+	typedef struct __ST_JOB_PROCESS_RESP__:__ST_RESPONE__
+	{
+		std::string strIsDelete;
+	}STJobProcessResp, *pSTJobProcessResp;
 }
 
 extern SATHTTP_API int nSATHTTP;
 
 // 登录接口;
-SATHTTP_API int Login(
-					  std::string url, 
-					  const SATParameters::STLoginReq &stLoginReq, 
-					  SATParameters::STLoginResp &stLoginResp
-					  ) throw();
+SATHTTP_API	int Login(std::string url, const SATParameters::STLoginReq &stLoginReq, SATParameters::STLoginResp &stLoginResp) throw();
 
 // 登录完后,必须向服务器更新设备信息,否则SAT上执行任务时无法更新Runner出来;
-SATHTTP_API int UpdateDeviceMessage(
-									std::string url, 
-									const SATParameters::STUpdateDeviceReq &stUpdateDeviceReq, 
-									SATParameters::STUpdateDeviceResp &stUpdateDeviceResp
-									) throw();
+SATHTTP_API int UpdateDeviceMessage(std::string url, const SATParameters::STUpdateDeviceReq &stUpdateDeviceReq, SATParameters::STUpdateDeviceResp &stUpdateDeviceResp) throw();
 
 // 更新完设备信息后,向服务器查询任务;
-SATHTTP_API int Heartbeat(
-						  std::string url, 
-						  const SATParameters::STHeartbeatReq &stHeartbeatReq, 
-						  SATParameters::STHeartbeatResp &stHeartbeatResp
-						  ) throw();
+SATHTTP_API int Heartbeat(std::string url, const SATParameters::STHeartbeatReq &stHeartbeatReq, SATParameters::STHeartbeatResp &stHeartbeatResp) throw();
+
+// 从心跳包中获取到任务后,通知SAT任务开始(变更SAT上的任务状态);
+SATHTTP_API int SetResult(std::string url, const SATParameters::STNotifyJobStartReq &stNotifyJobStartReq, SATParameters::STNotifyJobStartResp &stNotifyJobStartResp) throw();
+
+__if_not_exists(NotifyJobStart)
+{
+	SATHTTP_API int NotifyJobStart(std::string url, const SATParameters::STNotifyJobStartReq &stNotifyJobStartReq, SATParameters::STNotifyJobStartResp &stNotifyJobStartResp) throw()
+	{
+		return SetResult(url, stNotifyJobStartReq, stNotifyJobStartResp);
+	}
+}
+
+SATHTTP_API int SetResultList(std::string url, const SATParameters::STJobProcessReq &stJobProcessReq, SATParameters::STJobProcessResp &stJobProcessResp) throw();
 
 SATHTTP_API int GetIdNumber();
 
@@ -199,8 +279,7 @@ SATHTTP_API int GetCaseFileListUrl();
 SATHTTP_API int GetCaseInfo();
 SATHTTP_API int SaveCaseOrTaskLog();
 SATHTTP_API int SaveResultFile();
-SATHTTP_API int SetResult();
 SATHTTP_API int SaveResultImg();
-SATHTTP_API int SetResultList();
+