diff --git a/protocol/dubbo/client.go b/protocol/dubbo/client.go
index b11dd686b98ab5a4df3e3812d818de8654c450dd..344cc67c70d71daea668c4911ad18674a5fb217c 100644
--- a/protocol/dubbo/client.go
+++ b/protocol/dubbo/client.go
@@ -229,9 +229,9 @@ func (c *Client) call(ct CallType, addr string, svcUrl common.URL, method string
 		rsp.reply = reply
 		rsp.callback = callback
 		rsp.opts = opts
+	} else {
+		p.Header.Type = hessian.PackageRequest
 	}
-	// todo: it must be PackageRequest because of hessian2, but it is twoway actually
-	p.Header.Type = hessian.PackageRequest
 
 	var (
 		err     error
diff --git a/protocol/dubbo/codec_test.go b/protocol/dubbo/codec_test.go
index 8c3e5b18d9b80e7dcb176eb724a3340b067f9445..7ae227379afb79056b70564d1f3204d0606b1625 100644
--- a/protocol/dubbo/codec_test.go
+++ b/protocol/dubbo/codec_test.go
@@ -58,7 +58,7 @@ func TestDubboPackage_MarshalAndUnmarshal(t *testing.T) {
 	pkgres.Body = make([]interface{}, 7)
 	err = pkgres.Unmarshal(data)
 	assert.NoError(t, err)
-	assert.Equal(t, hessian.PackageRequest|hessian.PackageRequest_TwoWay, pkgres.Header.Type)
+	assert.Equal(t, hessian.PackageRequest, pkgres.Header.Type)
 	assert.Equal(t, byte(S_Dubbo), pkgres.Header.SerialID)
 	assert.Equal(t, int64(10086), pkgres.Header.ID)
 	assert.Equal(t, "2.5.4", pkgres.Body.([]interface{})[0])