diff --git a/frameworks/js/napi/http/async_context/src/request_context.cpp b/frameworks/js/napi/http/async_context/src/request_context.cpp index fc6e37871aea8f984446ef90d246036ad1fa3d3c..eaf3013a3ab06778c341881844b044608ec1e62a 100755 --- a/frameworks/js/napi/http/async_context/src/request_context.cpp +++ b/frameworks/js/napi/http/async_context/src/request_context.cpp @@ -1077,7 +1077,7 @@ std::string RequestContext::GetRequestHandoverInfo() requestHandoverInfo += "undone, retransTime:"; break; default: - requestHandoverInfo += "unkown type"; + requestHandoverInfo += "unknown type"; break; } requestHandoverInfo += std::to_string(requestHandoverInfo_.flowControlTime); diff --git a/frameworks/js/napi/http/http_exec/src/http_exec.cpp b/frameworks/js/napi/http/http_exec/src/http_exec.cpp index 5c35b5a8187baa5b63bb093ccdde80f78fe86acd..8037af626bd26e43e9f54288d5037924e6b4e2fd 100755 --- a/frameworks/js/napi/http/http_exec/src/http_exec.cpp +++ b/frameworks/js/napi/http/http_exec/src/http_exec.cpp @@ -538,6 +538,9 @@ void HttpExec::CacheCurlPerformanceTiming(CURL *handle, RequestContext *context) curl_easy_getinfo(handle, CURLINFO_PRIMARY_IP, &daddr); std::string anomDaddr = CommonUtils::ToAnonymousIp(daddr); curl_easy_getinfo(handle, CURLINFO_PRIMARY_PORT, &dport); +#ifdef HTTP_HANDOVER_FEATURE + std::string handoverInfo = context->GetRequestHandoverInfo(); +#endif NETSTACK_LOGI( "taskid=%{public}d" ", size:%{public}" CURL_FORMAT_CURL_OFF_T @@ -553,7 +556,7 @@ void HttpExec::CacheCurlPerformanceTiming(CURL *handle, RequestContext *context) firstSendTime == 0 ? 0 : firstSendTime - std::max({dnsTime, connectTime, tlsTime}), firstRecvTime == 0 ? 0 : firstRecvTime - firstSendTime, totalTime, redirectTime, #ifdef HTTP_HANDOVER_FEATURE - context->GetRequestHandoverInfo().c_str(), + handoverInfo.c_str(), #endif errCode, std::to_string(responseCode).c_str(), std::to_string(httpVer).c_str(), context->options.GetMethod().c_str(), osErr, diff --git a/frameworks/native/http/http_client/http_client.cpp b/frameworks/native/http/http_client/http_client.cpp index c372a4635ea785d4da39c9279267ba3f865b0864..58954c896a5dcd30906b90f697747b61eb723164 100644 --- a/frameworks/native/http/http_client/http_client.cpp +++ b/frameworks/native/http/http_client/http_client.cpp @@ -26,6 +26,7 @@ #include "netstack_log.h" #ifdef HTTP_HANDOVER_FEATURE #include "http_handover_info.h" +#include "request_info.h" #endif namespace OHOS { diff --git a/interfaces/innerkits/http_client/BUILD.gn b/interfaces/innerkits/http_client/BUILD.gn index ddd67d95e923e05b92a8dcbc971cbdfaddb8b9e7..09929c9d468ba6b83739e563495c4c2318d28d5b 100644 --- a/interfaces/innerkits/http_client/BUILD.gn +++ b/interfaces/innerkits/http_client/BUILD.gn @@ -93,8 +93,6 @@ ohos_shared_library("http_client") { "$NETSTACK_NATIVE_ROOT/http/http_client/http_client_response.cpp", "$NETSTACK_NATIVE_ROOT/http/http_client/http_client_task.cpp", "$NETSTACK_NATIVE_ROOT/http/http_client/http_client_time.cpp", - "$NETSTACK_DIR/frameworks/js/napi/http/async_context/src/request_context.cpp", - "$NETSTACK_DIR/frameworks/js/napi/http/options/src/http_request_options.cpp", "$NETSTACK_DIR/utils/http_over_curl/src/http_handover_handler.cpp", ] diff --git a/test/unittest/http_client/BUILD.gn b/test/unittest/http_client/BUILD.gn index d0219214056da3e56b3f1c9e2579c222a478dbc5..02847e32e318c1f99f7c13fd4b85720dd9ea772a 100644 --- a/test/unittest/http_client/BUILD.gn +++ b/test/unittest/http_client/BUILD.gn @@ -67,7 +67,10 @@ ohos_unittest("http_client_unittest") { "netmanager_base:net_conn_manager_if", "netmanager_base:net_security_config_if", ] - defines += [ "HAS_NETMANAGER_BASE=1" ] + defines += [ + "HAS_NETMANAGER_BASE=1", + "HTTP_HANDOVER_FEATURE", + ] } part_name = "netstack" diff --git a/test/unittest/http_client/HttpClientTaskTest.cpp b/test/unittest/http_client/HttpClientTaskTest.cpp index f22f30627b4b66403dd05ec697409199efceb39d..d29a0ff4043ccf3f2ccaeb3b018b5638442010ff 100644 --- a/test/unittest/http_client/HttpClientTaskTest.cpp +++ b/test/unittest/http_client/HttpClientTaskTest.cpp @@ -1341,4 +1341,36 @@ HWTEST_F(HttpClientTaskTest, ProcessErrorTest001, TestSize.Level1) EXPECT_NE(error.GetErrorCode(), 0); EXPECT_FALSE(error.GetErrorMessage().empty()); } + +HWTEST_F(HttpClientTaskTest, HandoverInfoTest, TestSize.Level1) +{ + HttpClientRequest httpReq; + std::string url = "http://nonexistenturl:8080"; + httpReq.SetURL(url); + httpReq.SetHeader("content-type", "text/plain"); + HttpSession &session = HttpSession::GetInstance(); + auto task = session.CreateTask(httpReq); + + int32_t handoverNum = 1; + int32_t handoverReason = 0; + double flowControlTime = 1.0; + int32_t readFlag = 0; + task->SetRequestHandoverInfo(handoverNum, handoverReason, flowControlTime, readFlag); + std::string handoverInfo = task->GetRequestHandoverInfo(); + + handoverReason = 1; + readFlag = 1; + task->SetRequestHandoverInfo(handoverNum, handoverReason, flowControlTime, readFlag); + handoverInfo = task->GetRequestHandoverInfo(); + + handoverReason = 2; + readFlag = 2; + task->SetRequestHandoverInfo(handoverNum, handoverReason, flowControlTime, readFlag); + handoverInfo = task->GetRequestHandoverInfo(); + + handoverReason = 3; + task->SetRequestHandoverInfo(handoverNum, handoverReason, flowControlTime, readFlag); + handoverInfo = task->GetRequestHandoverInfo(); + EXPECT_TRUE(task->Start()); +} } // namespace