From adaeac20cd10c68da159ad5dbf55aa020a467638 Mon Sep 17 00:00:00 2001 From: Quentin Garnier Date: Tue, 3 Mar 2015 00:09:20 +1100 Subject: [PATCH] Fix httplib problems --- apps/protocols/http/mode/soapcontent.pm | 1 + centreon/plugins/httplib.pm | 30 ++++++++++++++++--------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/apps/protocols/http/mode/soapcontent.pm b/apps/protocols/http/mode/soapcontent.pm index d11be0436..067dcd13e 100644 --- a/apps/protocols/http/mode/soapcontent.pm +++ b/apps/protocols/http/mode/soapcontent.pm @@ -144,6 +144,7 @@ sub check_options { } } } + $self->{headers}->{SOAPAction} = $self->{option_results}->{service_soap}; } sub load_request { diff --git a/centreon/plugins/httplib.pm b/centreon/plugins/httplib.pm index 859674c7c..5683339da 100644 --- a/centreon/plugins/httplib.pm +++ b/centreon/plugins/httplib.pm @@ -82,21 +82,31 @@ sub connect { } $req = HTTP::Request->new($method => $uri); - if ($method eq 'POST') { - my $uri_post = URI->new(); - if (defined($options{query_form_post})) { - $uri->query_form($options{query_form_post}); - } - $req->content_type('application/x-www-form-urlencoded'); - $req->content($uri_post->query); - } - + my $content_type_forced; if (defined($options{headers})) { foreach my $key (keys %{$options{headers}}) { - $req->header($key => $options{headers}->{$key}); + if ($key !~ /content-type/i) { + $req->header($key => $options{headers}->{$key}); + } else { + $content_type_forced = $options{headers}->{$key}; + } } } + if ($method eq 'POST') { + if (defined($content_type_forced)) { + $req->content_type($content_type_forced); + $req->content($options{query_form_post}); + } else { + my $uri_post = URI->new(); + if (defined($options{query_form_post})) { + $uri_post->query_form($options{query_form_post}); + } + $req->content_type('application/x-www-form-urlencoded'); + $req->content($uri_post->query); + } + } + if (defined($self->{option_results}->{credentials}) && defined($self->{option_results}->{ntlm})) { $ua->credentials($self->{option_results}->{hostname} . ':' . $self->{option_results}->{port}, '', $self->{option_results}->{username}, $self->{option_results}->{password}); } elsif (defined($self->{option_results}->{credentials})) {