diff --git a/jsonrpc/http.go b/jsonrpc/http.go
index 3a0dfb32abdf99b19c8584e5e9707d54fe8ce4b7..3ba0d25edb09d8c1c15373501b95b37115fd481c 100644
--- a/jsonrpc/http.go
+++ b/jsonrpc/http.go
@@ -115,7 +115,7 @@ func (c *HTTPClient) Call(ctx context.Context, service registry.ServiceURL, req
 	if reqTimeout <= 0 {
 		reqTimeout = 1e8
 	}
-	httpHeader.Set("Timeout", fmt.Sprintf("%d", reqTimeout))
+	httpHeader.Set("Timeout", reqTimeout.String())
 	if md, ok := ctx.Value(public.DUBBOGO_CTX_KEY).(map[string]string); ok {
 		for k := range md {
 			httpHeader.Set(k, md[k])
diff --git a/jsonrpc/server.go b/jsonrpc/server.go
index 6be864d27f5f0a9d74fcd1ed6c6071a51aeb33dc..5814b52127ae45840aa5ca7ff46c85ada3d32234 100644
--- a/jsonrpc/server.go
+++ b/jsonrpc/server.go
@@ -9,7 +9,6 @@ import (
 	"net/http"
 	"runtime"
 	"runtime/debug"
-	"strconv"
 	"sync"
 	"time"
 )
@@ -204,9 +203,9 @@ func (s *Server) handlePkg(rpc *serviceMap, conn net.Conn) {
 
 		ctx := context.Background()
 		if len(reqHeader["Timeout"]) > 0 {
-			timeout, err := strconv.ParseUint(reqHeader["Timeout"], 10, 64)
+			timeout, err := time.ParseDuration(reqHeader["Timeout"])
 			if err == nil {
-				httpTimeout = time.Duration(timeout)
+				httpTimeout = timeout
 				ctx, _ = context.WithTimeout(ctx, httpTimeout)
 			}
 			delete(reqHeader, "Timeout")