@@ -621,18 +621,18 @@ func (this *HttpClient) Head(url string) (*Response, error) {
621
621
}
622
622
623
623
// The GET request
624
- func (this * HttpClient ) Get (url string , params ... map [ string ] string ) (* Response , error ) {
624
+ func (this * HttpClient ) Get (url string , params ... interface {} ) (* Response , error ) {
625
625
for _ , p := range params {
626
- url = addParams (url , p )
626
+ url = addParams (url , toUrlValues ( p ) )
627
627
}
628
628
629
629
return this .Do ("GET" , url , nil , nil )
630
630
}
631
631
632
632
// The DELETE request
633
- func (this * HttpClient ) Delete (url string , params ... map [ string ] string ) (* Response , error ) {
633
+ func (this * HttpClient ) Delete (url string , params ... interface {} ) (* Response , error ) {
634
634
for _ , p := range params {
635
- url = addParams (url , p )
635
+ url = addParams (url , toUrlValues ( p ) )
636
636
}
637
637
638
638
return this .Do ("DELETE" , url , nil , nil )
@@ -645,36 +645,40 @@ func (this *HttpClient) Delete(url string, params ...map[string]string) (*Respon
645
645
//
646
646
// If any of the params key starts with "@", it is considered as a form file
647
647
// (similar to CURL but different).
648
- func (this * HttpClient ) Post (url string , params map [ string ] string ) (* Response ,
648
+ func (this * HttpClient ) Post (url string , params interface {} ) (* Response ,
649
649
error ) {
650
+ paramsValues := toUrlValues (params )
650
651
// Post with files should be sent as multipart.
651
- if checkParamFile (params ) {
652
+ if checkParamFile (paramsValues ) {
652
653
return this .PostMultipart (url , params )
653
654
}
654
655
655
656
headers := make (map [string ]string )
656
657
headers ["Content-Type" ] = "application/x-www-form-urlencoded"
657
- body := strings .NewReader (paramsToString ( params ))
658
+ body := strings .NewReader (paramsValues . Encode ( ))
658
659
659
660
return this .Do ("POST" , url , headers , body )
660
661
}
661
662
662
663
// Post with the request encoded as "multipart/form-data".
663
- func (this * HttpClient ) PostMultipart (url string , params map [ string ] string ) (
664
+ func (this * HttpClient ) PostMultipart (url string , params interface {} ) (
664
665
* Response , error ) {
665
666
body := & bytes.Buffer {}
666
667
writer := multipart .NewWriter (body )
667
668
669
+ paramsValues := toUrlValues (params )
668
670
// check files
669
- for k , v := range params {
670
- // is file
671
- if k [0 ] == '@' {
672
- err := addFormFile (writer , k [1 :], v )
673
- if err != nil {
674
- return nil , err
671
+ for k , v := range paramsValues {
672
+ for _ , vv := range v {
673
+ // is file
674
+ if k [0 ] == '@' {
675
+ err := addFormFile (writer , k [1 :], vv )
676
+ if err != nil {
677
+ return nil , err
678
+ }
679
+ } else {
680
+ writer .WriteField (k , vv )
675
681
}
676
- } else {
677
- writer .WriteField (k , v )
678
682
}
679
683
}
680
684
headers := make (map [string ]string )
@@ -726,7 +730,7 @@ func (this *HttpClient) PutJson(url string, data interface{}) (*Response, error)
726
730
// The OPTIONS request
727
731
func (this * HttpClient ) Options (url string , params ... map [string ]string ) (* Response , error ) {
728
732
for _ , p := range params {
729
- url = addParams (url , p )
733
+ url = addParams (url , toUrlValues ( p ) )
730
734
}
731
735
732
736
return this .Do ("OPTIONS" , url , nil , nil )
@@ -735,7 +739,7 @@ func (this *HttpClient) Options(url string, params ...map[string]string) (*Respo
735
739
// The CONNECT request
736
740
func (this * HttpClient ) Connect (url string , params ... map [string ]string ) (* Response , error ) {
737
741
for _ , p := range params {
738
- url = addParams (url , p )
742
+ url = addParams (url , toUrlValues ( p ) )
739
743
}
740
744
741
745
return this .Do ("CONNECT" , url , nil , nil )
@@ -744,7 +748,7 @@ func (this *HttpClient) Connect(url string, params ...map[string]string) (*Respo
744
748
// The TRACE request
745
749
func (this * HttpClient ) Trace (url string , params ... map [string ]string ) (* Response , error ) {
746
750
for _ , p := range params {
747
- url = addParams (url , p )
751
+ url = addParams (url , toUrlValues ( p ) )
748
752
}
749
753
750
754
return this .Do ("TRACE" , url , nil , nil )
@@ -753,7 +757,7 @@ func (this *HttpClient) Trace(url string, params ...map[string]string) (*Respons
753
757
// The PATCH request
754
758
func (this * HttpClient ) Patch (url string , params ... map [string ]string ) (* Response , error ) {
755
759
for _ , p := range params {
756
- url = addParams (url , p )
760
+ url = addParams (url , toUrlValues ( p ) )
757
761
}
758
762
759
763
return this .Do ("PATCH" , url , nil , nil )
0 commit comments