savon 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +31 -7
- data/README.textile +0 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/savon.rb +0 -0
- data/lib/savon/client.rb +6 -1
- data/lib/savon/core_ext.rb +0 -0
- data/lib/savon/core_ext/datetime.rb +0 -0
- data/lib/savon/core_ext/hash.rb +0 -0
- data/lib/savon/core_ext/object.rb +0 -0
- data/lib/savon/core_ext/string.rb +0 -0
- data/lib/savon/core_ext/symbol.rb +0 -0
- data/lib/savon/core_ext/uri.rb +0 -0
- data/lib/savon/request.rb +5 -0
- data/lib/savon/response.rb +0 -0
- data/lib/savon/soap.rb +11 -9
- data/lib/savon/wsdl.rb +67 -31
- data/lib/savon/wsse.rb +0 -0
- data/spec/fixtures/multiple_user_response.xml +0 -0
- data/spec/fixtures/soap_fault.xml +0 -0
- data/spec/fixtures/user_fixture.rb +8 -4
- data/spec/fixtures/user_response.xml +0 -0
- data/spec/fixtures/user_wsdl.xml +0 -0
- data/spec/http_stubs.rb +15 -17
- data/spec/savon/client_spec.rb +46 -47
- data/spec/savon/core_ext/datetime_spec.rb +0 -0
- data/spec/savon/core_ext/hash_spec.rb +0 -0
- data/spec/savon/core_ext/object_spec.rb +0 -0
- data/spec/savon/core_ext/string_spec.rb +0 -0
- data/spec/savon/core_ext/symbol_spec.rb +0 -0
- data/spec/savon/core_ext/uri_spec.rb +0 -0
- data/spec/savon/request_spec.rb +44 -64
- data/spec/savon/response_spec.rb +34 -51
- data/spec/savon/savon_spec.rb +13 -19
- data/spec/savon/soap_spec.rb +61 -92
- data/spec/savon/wsdl_spec.rb +19 -34
- data/spec/savon/wsse_spec.rb +42 -58
- data/spec/spec_helper.rb +1 -1
- data/spec/{spec_helper_methods.rb → spec_helper_classes.rb} +32 -4
- metadata +15 -15
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/savon/request_spec.rb
CHANGED
@@ -1,92 +1,72 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Savon::Request do
|
4
|
-
before { @request =
|
4
|
+
before { @request = Savon::Request.new EndpointHelper.wsdl_endpoint }
|
5
5
|
|
6
|
-
|
7
|
-
Savon::
|
6
|
+
it "contains the ContentType for each supported SOAP version" do
|
7
|
+
Savon::SOAPVersions.each do |soap_version|
|
8
|
+
Savon::Request::ContentType[soap_version].should be_a String
|
9
|
+
Savon::Request::ContentType[soap_version].should_not be_empty
|
10
|
+
end
|
8
11
|
end
|
9
12
|
|
10
|
-
|
11
|
-
Savon::SOAP.new UserFixture.soap_actions[:find_user]
|
12
|
-
end
|
13
|
+
# defaults to log request and response. disabled for spec execution
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
15
|
+
it "has both getter and setter for whether to log (global setting)" do
|
16
|
+
Savon::Request.log = true
|
17
|
+
Savon::Request.log?.should be_true
|
18
|
+
Savon::Request.log = false
|
19
|
+
Savon::Request.log?.should be_false
|
21
20
|
end
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
it "has accessor methods" do
|
27
|
-
Savon::Request.log = true
|
28
|
-
Savon::Request.log?.should be_true
|
29
|
-
Savon::Request.log = false
|
30
|
-
Savon::Request.log?.should be_false
|
31
|
-
end
|
22
|
+
it "defaults to use a Logger instance for logging" do
|
23
|
+
Savon::Request.logger.should be_a Logger
|
32
24
|
end
|
33
25
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
it "has both getter and setter for the logger to use (global setting)" do
|
27
|
+
Savon::Request.logger = nil
|
28
|
+
Savon::Request.logger.should be_nil
|
29
|
+
Savon::Request.logger = Logger.new STDOUT
|
30
|
+
end
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
Savon::Request.logger.should be_nil
|
42
|
-
Savon::Request.logger = Logger.new STDOUT
|
43
|
-
end
|
32
|
+
it "defaults to :debug for logging" do
|
33
|
+
Savon::Request.log_level.should == :debug
|
44
34
|
end
|
45
35
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
36
|
+
it "has both getter and setter for the log level to use (global setting)" do
|
37
|
+
Savon::Request.log_level = :info
|
38
|
+
Savon::Request.log_level.should == :info
|
39
|
+
Savon::Request.log_level = :debug
|
40
|
+
end
|
50
41
|
|
51
|
-
|
52
|
-
|
53
|
-
Savon::Request.log_level.should == :info
|
54
|
-
Savon::Request.log_level = :debug
|
55
|
-
end
|
42
|
+
it "is initialized with a SOAP endpoint String" do
|
43
|
+
Savon::Request.new EndpointHelper.wsdl_endpoint
|
56
44
|
end
|
57
45
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
46
|
+
it "raises an ArgumentError when initialized with an invalid endpoint" do
|
47
|
+
lambda { Savon::Request.new "invalid" }.should raise_error ArgumentError
|
48
|
+
end
|
62
49
|
|
63
|
-
|
64
|
-
|
65
|
-
end
|
50
|
+
it "has a getter for the SOAP endpoint URI" do
|
51
|
+
@request.endpoint.should == URI(EndpointHelper.wsdl_endpoint)
|
66
52
|
end
|
67
53
|
|
68
|
-
|
69
|
-
|
70
|
-
@request.endpoint.should == SpecHelper.some_endpoint_uri
|
71
|
-
end
|
54
|
+
it "has a setter for specifying a read_timeout" do
|
55
|
+
@request.read_timeout = 30
|
72
56
|
end
|
73
57
|
|
74
|
-
|
75
|
-
|
76
|
-
wsdl_response = @request.wsdl
|
58
|
+
it "retrieves the WSDL document and returns the Net::HTTPResponse" do
|
59
|
+
wsdl_response = @request.wsdl
|
77
60
|
|
78
|
-
|
79
|
-
|
80
|
-
end
|
61
|
+
wsdl_response.should be_a Net::HTTPResponse
|
62
|
+
wsdl_response.body.should == UserFixture.user_wsdl
|
81
63
|
end
|
82
64
|
|
83
|
-
|
84
|
-
|
85
|
-
soap_response = @request.soap some_soap_instance
|
65
|
+
it "executes a SOAP request and returns the Net::HTTPResponse" do
|
66
|
+
soap_response = @request.soap Savon::SOAP.new
|
86
67
|
|
87
|
-
|
88
|
-
|
89
|
-
end
|
68
|
+
soap_response.should be_a Net::HTTPResponse
|
69
|
+
soap_response.body.should == UserFixture.user_response
|
90
70
|
end
|
91
71
|
|
92
|
-
end
|
72
|
+
end
|
data/spec/savon/response_spec.rb
CHANGED
@@ -1,54 +1,40 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Savon::Response do
|
4
|
-
before { @response =
|
4
|
+
before { @response = Savon::Response.new http_response_mock }
|
5
5
|
|
6
|
-
|
7
|
-
Savon::Response.
|
6
|
+
it "defaults to raises both Savon::SOAPFault and Savon::HTTPError" do
|
7
|
+
Savon::Response.raise_errors?.should be_true
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
Savon::Response.
|
12
|
-
|
13
|
-
|
14
|
-
def http_error_response_instance
|
15
|
-
Savon::Response.new http_response_mock(404, "", "Not found")
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "@raise_errors" do
|
19
|
-
it "defaults to true" do
|
20
|
-
Savon::Response.raise_errors?.should be_true
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has accessor methods" do
|
24
|
-
Savon::Response.raise_errors = false
|
25
|
-
Savon::Response.raise_errors?.should == false
|
26
|
-
Savon::Response.raise_errors = true
|
27
|
-
end
|
10
|
+
it "has both getter and setter for whether to raise errors (global setting)" do
|
11
|
+
Savon::Response.raise_errors = false
|
12
|
+
Savon::Response.raise_errors?.should == false
|
13
|
+
Savon::Response.raise_errors = true
|
28
14
|
end
|
29
15
|
|
30
16
|
describe "initialize" do
|
31
17
|
it "expects a Net::HTTPResponse" do
|
32
|
-
|
18
|
+
Savon::Response.new http_response_mock
|
33
19
|
end
|
34
20
|
|
35
21
|
it "raises a Savon::SOAPFault in case of a SOAP fault" do
|
36
|
-
lambda {
|
22
|
+
lambda { savon_response_with :soap_fault }.should raise_error Savon::SOAPFault
|
37
23
|
end
|
38
24
|
|
39
25
|
it "does not raise a Savon::SOAPFault in case the default is turned off" do
|
40
26
|
Savon::Response.raise_errors = false
|
41
|
-
|
27
|
+
savon_response_with :soap_fault
|
42
28
|
Savon::Response.raise_errors = true
|
43
29
|
end
|
44
30
|
|
45
31
|
it "raises a Savon::HTTPError in case of an HTTP error" do
|
46
|
-
lambda {
|
32
|
+
lambda { savon_response_with :http_error }.should raise_error Savon::HTTPError
|
47
33
|
end
|
48
34
|
|
49
35
|
it "does not raise a Savon::HTTPError in case the default is turned off" do
|
50
36
|
Savon::Response.raise_errors = false
|
51
|
-
|
37
|
+
savon_response_with :http_error
|
52
38
|
Savon::Response.raise_errors = true
|
53
39
|
end
|
54
40
|
end
|
@@ -61,8 +47,7 @@ describe Savon::Response do
|
|
61
47
|
end
|
62
48
|
|
63
49
|
it "returns true in case of a SOAP fault" do
|
64
|
-
|
65
|
-
response.soap_fault?.should be_true
|
50
|
+
savon_response_with(:soap_fault).soap_fault?.should be_true
|
66
51
|
end
|
67
52
|
|
68
53
|
after { Savon::Response.raise_errors = true }
|
@@ -72,8 +57,8 @@ describe Savon::Response do
|
|
72
57
|
before { Savon::Response.raise_errors = false }
|
73
58
|
|
74
59
|
it "returns the SOAP fault message in case of a SOAP fault" do
|
75
|
-
|
76
|
-
|
60
|
+
savon_response_with(:soap_fault).soap_fault.
|
61
|
+
should == "(soap:Server) Fault occurred while processing."
|
77
62
|
end
|
78
63
|
|
79
64
|
after { Savon::Response.raise_errors = true }
|
@@ -87,8 +72,7 @@ describe Savon::Response do
|
|
87
72
|
end
|
88
73
|
|
89
74
|
it "returns true in case of an HTTP error" do
|
90
|
-
|
91
|
-
response.http_error?.should be_true
|
75
|
+
savon_response_with(:http_error).http_error?.should be_true
|
92
76
|
end
|
93
77
|
|
94
78
|
after { Savon::Response.raise_errors = true }
|
@@ -98,36 +82,35 @@ describe Savon::Response do
|
|
98
82
|
before { Savon::Response.raise_errors = false }
|
99
83
|
|
100
84
|
it "returns the HTTP error message in case of an HTTP error" do
|
101
|
-
|
102
|
-
response.http_error.should == "Not found (404)"
|
85
|
+
savon_response_with(:http_error).http_error.should == "Not found (404)"
|
103
86
|
end
|
104
87
|
|
105
88
|
after { Savon::Response.raise_errors = true }
|
106
89
|
end
|
107
90
|
|
108
|
-
|
109
|
-
|
110
|
-
@response.to_hash.should == UserFixture.response_hash
|
111
|
-
end
|
91
|
+
it "can return the SOAP response body as a Hash" do
|
92
|
+
@response.to_hash.should == UserFixture.response_hash
|
112
93
|
end
|
113
94
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
end
|
95
|
+
it "can return the raw SOAP response body" do
|
96
|
+
@response.to_xml.should == UserFixture.user_response
|
97
|
+
@response.to_s.should == UserFixture.user_response
|
118
98
|
end
|
119
99
|
|
120
|
-
|
121
|
-
|
122
|
-
|
100
|
+
def savon_response_with(error_type)
|
101
|
+
mock = case error_type
|
102
|
+
when :soap_fault then http_response_mock(200, UserFixture.soap_fault)
|
103
|
+
when :http_error then http_response_mock(404, "", "Not found")
|
123
104
|
end
|
105
|
+
Savon::Response.new mock
|
124
106
|
end
|
125
107
|
|
126
|
-
def http_response_mock(code = 200, body =
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
108
|
+
def http_response_mock(code = 200, body = nil, message = "OK")
|
109
|
+
body ||= UserFixture.user_response
|
110
|
+
mock = mock "Net::HTTPResponse"
|
111
|
+
mock.stubs :code => code.to_s, :message => message,
|
112
|
+
:content_type => "text/html", :body => body
|
113
|
+
mock
|
131
114
|
end
|
132
115
|
|
133
|
-
end
|
116
|
+
end
|
data/spec/savon/savon_spec.rb
CHANGED
@@ -2,29 +2,23 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Savon do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Savon::SOAPVersions.should_not be_empty
|
9
|
-
end
|
5
|
+
it "contains an Array of supported SOAP versions" do
|
6
|
+
Savon::SOAPVersions.should be_an Array
|
7
|
+
Savon::SOAPVersions.should_not be_empty
|
10
8
|
end
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
Savon::SOAPDateTimeFormat.should_not be_empty
|
10
|
+
it "contains the xs:dateTime format" do
|
11
|
+
Savon::SOAPDateTimeFormat.should be_a String
|
12
|
+
Savon::SOAPDateTimeFormat.should_not be_empty
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
14
|
+
UserFixture.datetime_object.strftime(Savon::SOAPDateTimeFormat).
|
15
|
+
should == UserFixture.datetime_string
|
20
16
|
end
|
21
17
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
should be_true
|
27
|
-
end
|
18
|
+
it "contains a Regexp matching the xs:dateTime format" do
|
19
|
+
Savon::SOAPDateTimeRegexp.should be_a Regexp
|
20
|
+
(Savon::SOAPDateTimeRegexp === UserFixture.datetime_string).
|
21
|
+
should be_true
|
28
22
|
end
|
29
23
|
|
30
|
-
end
|
24
|
+
end
|
data/spec/savon/soap_spec.rb
CHANGED
@@ -1,146 +1,115 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Savon::SOAP do
|
4
|
-
before
|
5
|
-
|
6
|
-
|
7
|
-
Savon::SOAP.new UserFixture.soap_actions[:find_user]
|
4
|
+
before do
|
5
|
+
@soap = Savon::SOAP.new
|
6
|
+
@soap.action = UserFixture.operations[:find_user][:action]
|
8
7
|
end
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
Savon::
|
13
|
-
|
14
|
-
Savon::SOAP::SOAPNamespace[soap_version].should_not be_empty
|
15
|
-
end
|
9
|
+
it "contains the SOAP namespace for each supported SOAP version" do
|
10
|
+
Savon::SOAPVersions.each do |soap_version|
|
11
|
+
Savon::SOAP::SOAPNamespace[soap_version].should be_a String
|
12
|
+
Savon::SOAP::SOAPNamespace[soap_version].should_not be_empty
|
16
13
|
end
|
17
14
|
end
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
Savon::
|
22
|
-
|
23
|
-
Savon::SOAP::ContentType[soap_version].should_not be_empty
|
24
|
-
end
|
16
|
+
it "contains the Content-Types for each supported SOAP version" do
|
17
|
+
Savon::SOAPVersions.each do |soap_version|
|
18
|
+
Savon::SOAP::ContentType[soap_version].should be_a String
|
19
|
+
Savon::SOAP::ContentType[soap_version].should_not be_empty
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
28
|
-
|
29
|
-
|
30
|
-
Savon::SOAP.version.should == 1
|
31
|
-
end
|
32
|
-
|
33
|
-
it "has accessor methods" do
|
34
|
-
[2, 1].each do |soap_version|
|
35
|
-
Savon::SOAP.version = soap_version
|
36
|
-
Savon::SOAP.version.should == soap_version
|
37
|
-
end
|
38
|
-
end
|
23
|
+
it "defaults to SOAP 1.1" do
|
24
|
+
Savon::SOAP.version.should == 1
|
39
25
|
end
|
40
26
|
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
it "has both getter and setter for the SOAP version to use (global setting)" do
|
28
|
+
[2, 1].each do |soap_version|
|
29
|
+
Savon::SOAP.version = soap_version
|
30
|
+
Savon::SOAP.version.should == soap_version
|
44
31
|
end
|
45
32
|
end
|
46
33
|
|
47
|
-
|
48
|
-
|
49
|
-
@soap.wsse = Savon::WSSE.new
|
50
|
-
end
|
34
|
+
it "has a setter for the Savon::WSSE" do
|
35
|
+
@soap.wsse = Savon::WSSE.new
|
51
36
|
end
|
52
37
|
|
53
|
-
|
54
|
-
|
55
|
-
@soap.action.should == UserFixture.soap_actions[:find_user][:name]
|
38
|
+
it "is has both getter and setter for the SOAP action" do
|
39
|
+
@soap.action.should == UserFixture.operations[:find_user][:action]
|
56
40
|
|
57
|
-
|
58
|
-
|
59
|
-
@soap.action.should == action
|
60
|
-
end
|
41
|
+
@soap.action = "someAction"
|
42
|
+
@soap.action.should == "someAction"
|
61
43
|
end
|
62
44
|
|
63
|
-
|
64
|
-
|
65
|
-
@soap.input = "FindUserRequest"
|
66
|
-
end
|
45
|
+
it "has a setter for the SOAP input" do
|
46
|
+
@soap.input = "FindUserRequest"
|
67
47
|
end
|
68
48
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
@soap.header.should be_empty
|
49
|
+
it "has both getter and setter for the SOAP header" do
|
50
|
+
@soap.header.should be_a Hash
|
51
|
+
@soap.header.should be_empty
|
73
52
|
|
74
|
-
|
75
|
-
|
76
|
-
@soap.header.should == header
|
77
|
-
end
|
53
|
+
@soap.header = { "specialAuthKey" => "secret" }
|
54
|
+
@soap.header.should == { "specialAuthKey" => "secret" }
|
78
55
|
end
|
79
56
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
@soap.body = "<id>666</id>"
|
84
|
-
end
|
57
|
+
it "has a getter for the SOAP body, expecting a Hash or an XML String" do
|
58
|
+
@soap.body = { :id => 666 }
|
59
|
+
@soap.body = "<id>666</id>"
|
85
60
|
end
|
86
61
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
62
|
+
it "has a setter for specifying a Hash of namespaces" do
|
63
|
+
namespaces = { "xmlns:env" => "http://example.com" }
|
64
|
+
@soap.namespaces = namespaces
|
65
|
+
@soap.namespaces.should == namespaces
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "has a getter for namespaces" do
|
69
|
+
it "which defaults to include the SOAP 1.1 namespace" do
|
70
|
+
@soap.namespaces.should == { "xmlns:env" => Savon::SOAP::SOAPNamespace[1] }
|
91
71
|
end
|
92
72
|
|
93
|
-
it "contains the
|
94
|
-
soap =
|
95
|
-
soap.
|
96
|
-
soap.namespaces.should == { "xmlns:env" => Savon::SOAP::SOAPNamespace[2] }
|
73
|
+
it "which contains the SOAP 1.2 namespace if specified" do
|
74
|
+
@soap.version = 2
|
75
|
+
@soap.namespaces.should == { "xmlns:env" => Savon::SOAP::SOAPNamespace[2] }
|
97
76
|
end
|
98
77
|
end
|
99
78
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
soap.version = 2
|
104
|
-
soap.version.should == 2
|
105
|
-
end
|
79
|
+
it "has a getter for the SOAP version to use which defaults to SOAP 1.1" do
|
80
|
+
@soap.version.should == Savon::SOAP.version
|
81
|
+
end
|
106
82
|
|
107
|
-
|
108
|
-
|
109
|
-
|
83
|
+
it "has a setter for specifying the SOAP version to use" do
|
84
|
+
@soap.version = 2
|
85
|
+
@soap.version.should == 2
|
110
86
|
end
|
111
87
|
|
112
88
|
describe "to_xml" do
|
113
|
-
|
89
|
+
after { Savon::SOAP.version = 1 }
|
114
90
|
|
115
91
|
it "returns the XML for a SOAP request" do
|
116
|
-
soap =
|
117
|
-
soap.
|
118
|
-
|
119
|
-
soap.to_xml.should
|
92
|
+
@soap.namespaces["xmlns:wsdl"] = "http://v1_0.ws.user.example.com"
|
93
|
+
@soap.body = { :id => 666 }
|
94
|
+
|
95
|
+
@soap.to_xml.should include 'xmlns:wsdl="http://v1_0.ws.user.example.com"'
|
96
|
+
@soap.to_xml.should include 'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"'
|
97
|
+
@soap.to_xml.should include '<wsdl:findUser><id>666</id></wsdl:findUser>'
|
120
98
|
end
|
121
99
|
|
122
100
|
it "caches the XML, returning the same Object every time" do
|
123
101
|
@soap.to_xml.object_id.should == @soap.to_xml.object_id
|
124
102
|
end
|
125
103
|
|
126
|
-
it "uses the SOAP namespace for the SOAP version
|
127
|
-
soap =
|
128
|
-
soap.
|
129
|
-
soap.to_xml.should include Savon::SOAP::SOAPNamespace[2]
|
104
|
+
it "uses the SOAP namespace for the specified SOAP version" do
|
105
|
+
@soap.version = 2
|
106
|
+
@soap.to_xml.should include Savon::SOAP::SOAPNamespace[2]
|
130
107
|
end
|
131
108
|
|
132
109
|
it "uses the SOAP namespace for the default SOAP version otherwise" do
|
133
110
|
Savon::SOAP.version = 2
|
134
111
|
@soap.to_xml.should include Savon::SOAP::SOAPNamespace[2]
|
135
112
|
end
|
136
|
-
|
137
|
-
def soap_body
|
138
|
-
"<env:Envelope xmlns:wsdl=\"http://v1_0.ws.user.example.com\" " <<
|
139
|
-
"xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">" <<
|
140
|
-
"<env:Header></env:Header>" <<
|
141
|
-
"<env:Body><wsdl:findUser><id>666</id></wsdl:findUser></env:Body>" <<
|
142
|
-
"</env:Envelope>"
|
143
|
-
end
|
144
113
|
end
|
145
114
|
|
146
115
|
end
|