diff --git a/internal/dms/biz/cloudbeaver.go b/internal/dms/biz/cloudbeaver.go index 38fb1889..3e0352f0 100644 --- a/internal/dms/biz/cloudbeaver.go +++ b/internal/dms/biz/cloudbeaver.go @@ -11,6 +11,7 @@ import ( "mime/multipart" "net" "net/http" + "net/url" "path" "strconv" "strings" @@ -2341,13 +2342,13 @@ func (cu *CloudbeaverUsecase) AutoCreateAndExecuteWorkflow(ctx context.Context, return nil, fmt.Errorf("close multipart writer failed: %v", err) } - url := fmt.Sprintf("%s/v1/projects/%s/workflows/auto_create_and_execute", sqleUrl, projectName) + reqURL := fmt.Sprintf("%s/v1/projects/%s/workflows/auto_create_and_execute", sqleUrl, url.PathEscape(projectName)) headers := map[string]string{ "Authorization": pkgHttp.DefaultDMSToken, } var reply AutoCreateAndExecuteWorkflowRes - if err := pkgHttp.Call(ctx, http.MethodPost, url, headers, writer.FormDataContentType(), requestBody.Bytes(), &reply); err != nil { + if err := pkgHttp.Call(ctx, http.MethodPost, reqURL, headers, writer.FormDataContentType(), requestBody.Bytes(), &reply); err != nil { return nil, fmt.Errorf("request sqle failed: %v", err) } diff --git a/internal/dms/biz/db_service.go b/internal/dms/biz/db_service.go index bdc4d5d8..5742f708 100644 --- a/internal/dms/biz/db_service.go +++ b/internal/dms/biz/db_service.go @@ -3,6 +3,7 @@ package biz import ( "context" "fmt" + "net/url" "sync" "time" @@ -417,7 +418,7 @@ func (d *DBServiceUsecase) AddInstanceAuditPlanForDBServiceFromSqle(ctx context. if err != nil { return fmt.Errorf("get proxy target by name failed: %v", err) } - sqleAddr := fmt.Sprintf("%s/v2/projects/%s/instance_audit_plans", target.URL.String(), project.Name) + sqleAddr := fmt.Sprintf("%s/v2/projects/%s/instance_audit_plans", target.URL.String(), url.PathEscape(project.Name)) header := map[string]string{ "Authorization": pkgHttp.DefaultDMSToken, i18nPkg.AcceptLanguageKey: locale.Bundle.GetLangTagFromCtx(ctx).String(),