jruby-httpclient 0.3.0-java → 0.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jruby-httpclient}
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
  s.platform = Gem::Platform.new([nil, "java", nil])
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Adam Esterline"]
13
- s.date = %q{2011-06-28}
13
+ s.date = %q{2011-07-01}
14
14
  s.description = %q{An HTTP client designed for use with JRuby in a threaded environment}
15
15
  s.email = %q{adam@esterlines.com}
16
16
  s.extra_rdoc_files = [
@@ -28,16 +28,19 @@ Gem::Specification.new do |s|
28
28
  "jruby-httpclient.gemspec",
29
29
  "lib/http_client.rb",
30
30
  "lib/http_client/client.rb",
31
+ "lib/http_client/client_configuration.rb",
31
32
  "lib/http_client/methods.rb",
32
- "lib/http_client/parameters.rb",
33
+ "lib/http_client/response.rb",
33
34
  "test/helper.rb",
34
35
  "test/http_client/test_basic_auth.rb",
35
36
  "test/http_client/test_basic_client_operations.rb",
37
+ "test/http_client/test_client_configuration.rb",
36
38
  "test/http_client/test_client_headers.rb",
37
- "test/http_client/test_client_parameters.rb",
38
39
  "test/http_client/test_cookies.rb",
39
40
  "test/http_client/test_redirect.rb",
40
41
  "test/http_client/test_request_entity.rb",
42
+ "test/http_client/test_response.rb",
43
+ "test/http_client/test_server_headers.rb",
41
44
  "test/http_test_server.rb",
42
45
  "vendor/commons-codec-1.4.jar",
43
46
  "vendor/commons-logging-1.1.1.jar",
@@ -12,6 +12,7 @@ require 'httpmime-4.1.1'
12
12
  require 'httpclient-4.1.1'
13
13
  require 'httpclient-cache-4.1.1'
14
14
 
15
- require 'parameters'
15
+ require 'client_configuration'
16
+ require 'response'
16
17
  require 'methods'
17
18
  require 'client'
@@ -5,53 +5,34 @@ module HTTP
5
5
  SocketTimeoutException = java.net.SocketTimeoutException
6
6
 
7
7
  class Client
8
- DEFAULT_TIMEOUT = 30_000
9
- include HTTP::Parameters
10
-
11
8
  def initialize(options = {})
12
- self.so_timeout = DEFAULT_TIMEOUT
13
-
14
- if options[:disable_response_handler]
15
- @response_handler = nil
16
- elsif options[:response_handler]
17
- @response_handler = options[:response_handler]
18
- else
19
- @response_handler = BasicResponseHandler.new
20
- end
21
-
22
- @encoding = options[:encoding] || "UTF-8"
23
-
24
- # Set options from the rest of the options-hash
25
- options.each do |parameter_name, parameter_value|
26
- setter_name = "#{parameter_name}="
27
- self.send(setter_name, parameter_value) if self.respond_to?(setter_name)
28
- end
29
-
30
- @client = DefaultHttpClient.new(params)
9
+ @client = HTTP::ClientConfiguration.new(options).build_http_client
31
10
  end
32
11
 
33
- # Request Methods
34
-
35
12
  def get(params, options = {})
36
- execute(Get.new(params, options))
13
+ read_response(Get.new(params, options))
37
14
  end
38
15
 
39
16
  def post(params, options = {})
40
- execute(Post.new(params, options))
17
+ read_response(Post.new(params, options))
41
18
  end
42
19
 
43
20
  def delete(path)
44
- execute(Delete.new(path))
21
+ read_response(Delete.new(path))
45
22
  end
46
23
 
47
24
  def put(path)
48
- execute(Put.new(path))
25
+ read_response(Put.new(path))
26
+ end
27
+
28
+ def read_response(request)
29
+ execute(request).body
49
30
  end
50
31
 
51
32
  def execute(request)
52
- request.make_native_request(@client, @encoding, @response_handler)
53
- rescue SocketTimeoutException
54
- raise Timeout::Error, "timed out after #{so_timeout} ms"
33
+ request.make_native_request(@client)
34
+ rescue SocketTimeoutException => e
35
+ raise Timeout::Error, e.message
55
36
  end
56
37
 
57
38
  def shutdown
@@ -0,0 +1,136 @@
1
+ module HTTP
2
+ BasicHttpParams = org.apache.http.params.BasicHttpParams
3
+ HttpHost = org.apache.http.HttpHost
4
+ CoreProtocolPNames = org.apache.http.params.CoreProtocolPNames
5
+ CoreConnectionPNames = org.apache.http.params.CoreConnectionPNames
6
+ ConnRoutePNames = org.apache.http.conn.params.ConnRoutePNames
7
+ CookieSpecPNames = org.apache.http.cookie.params.CookieSpecPNames
8
+ AuthPNames = org.apache.http.auth.params.AuthPNames
9
+ ClientPNames = org.apache.http.client.params.ClientPNames
10
+ CookiePolicy = org.apache.http.client.params.CookiePolicy
11
+
12
+ CLIENT_CONFIGURATION_PARAMETERS = {
13
+ :protocol_version => HTTP::CoreProtocolPNames::PROTOCOL_VERSION,
14
+ :strict_transfer_encoding => HTTP::CoreProtocolPNames::STRICT_TRANSFER_ENCODING,
15
+ :http_element_charset => HTTP::CoreProtocolPNames::HTTP_ELEMENT_CHARSET,
16
+ :use_expect_continue => HTTP::CoreProtocolPNames::USE_EXPECT_CONTINUE,
17
+ :wait_for_continue => HTTP::CoreProtocolPNames::WAIT_FOR_CONTINUE,
18
+ :user_agent => HTTP::CoreProtocolPNames::USER_AGENT,
19
+ :tcp_nodelay => HTTP::CoreConnectionPNames.TCP_NODELAY,
20
+ :so_timeout => HTTP::CoreConnectionPNames.SO_TIMEOUT,
21
+ :so_linger => HTTP::CoreConnectionPNames.SO_LINGER,
22
+ :so_reuseaddr => HTTP::CoreConnectionPNames.SO_REUSEADDR,
23
+ :socket_buffer_size => HTTP::CoreConnectionPNames.SOCKET_BUFFER_SIZE,
24
+ :connection_timeout => HTTP::CoreConnectionPNames.CONNECTION_TIMEOUT,
25
+ :max_line_length => HTTP::CoreConnectionPNames.MAX_LINE_LENGTH,
26
+ :max_header_count => HTTP::CoreConnectionPNames.MAX_HEADER_COUNT,
27
+ :stale_connection_check => HTTP::CoreConnectionPNames.STALE_CONNECTION_CHECK,
28
+ # :forced_route => HTTP::ConnRoutePNames::FORCED_ROUTE, # not implemented
29
+ :local_address => HTTP::ConnRoutePNames::LOCAL_ADDRESS,
30
+ :default_proxy => HTTP::ConnRoutePNames::DEFAULT_PROXY,
31
+ :date_patterns => HTTP::CookieSpecPNames::DATE_PATTERNS,
32
+ :single_cookie_header => HTTP::CookieSpecPNames::SINGLE_COOKIE_HEADER,
33
+ :credential_charset => HTTP::AuthPNames::CREDENTIAL_CHARSET,
34
+ :cookie_policy => HTTP::ClientPNames::COOKIE_POLICY,
35
+ :handle_authentication => HTTP::ClientPNames::HANDLE_AUTHENTICATION,
36
+ :handle_redirects => HTTP::ClientPNames::HANDLE_REDIRECTS,
37
+ :max_redirects => HTTP::ClientPNames::MAX_REDIRECTS,
38
+ :allow_circular_redirects => HTTP::ClientPNames::ALLOW_CIRCULAR_REDIRECTS,
39
+ :virtual_host => HTTP::ClientPNames::VIRTUAL_HOST,
40
+ :default_host => HTTP::ClientPNames::DEFAULT_HOST
41
+ # :default_headers => HTTP::ClientPNames::DEFAULT_HEADERS, # not implemented
42
+ # :connection_manager_factory_class_name => HTTP::ClientPNames::CONNECTION_MANAGER_FACTORY_CLASS_NAME # not implemented
43
+ }
44
+
45
+ class ClientConfiguration
46
+ DEFAULT_TIMEOUT = 30_000
47
+
48
+ CLIENT_CONFIGURATION_PARAMETERS.each do |method_name, param_class|
49
+ define_method(method_name) do
50
+ params.get_parameter param_class
51
+ end
52
+
53
+ define_method("#{method_name}=") do |arg|
54
+ arg.add_to_params(params, CLIENT_CONFIGURATION_PARAMETERS[method_name])
55
+ end
56
+ end
57
+
58
+ def initialize(options = {})
59
+ self.so_timeout = DEFAULT_TIMEOUT
60
+
61
+ options.each do |parameter_name, parameter_value|
62
+ setter_name = "#{parameter_name}="
63
+ self.send(setter_name, parameter_value) if self.respond_to?(setter_name)
64
+ end
65
+ end
66
+
67
+ def build_http_client
68
+ DefaultHttpClient.new(params)
69
+ end
70
+
71
+ def protocol_version=(version_string)
72
+ protocol, major_version, minor_version = version_string.split(/[\.|\s|\/]/)
73
+ params.set_parameter HTTP::CoreProtocolPNames::PROTOCOL_VERSION, org.apache.http.ProtocolVersion.new(protocol, major_version.to_i, minor_version.to_i)
74
+ end
75
+
76
+ def local_address=(local_addr_str)
77
+ params.set_parameter HTTP::ConnRoutePNames::LOCAL_ADDRESS, java.net.InetAddress.getByName(local_addr_str)
78
+ end
79
+
80
+ def default_proxy=(host)
81
+ set_host_parameter(HTTP::ConnRoutePNames::DEFAULT_PROXY, host)
82
+ end
83
+
84
+ def virtual_host=(host)
85
+ set_host_parameter(HTTP::ClientPNames::VIRTUAL_HOST, host)
86
+ end
87
+
88
+ def default_host=(host)
89
+ set_host_parameter(HTTP::ClientPNames::DEFAULT_HOST, host)
90
+ end
91
+
92
+ def timeout_in_seconds=(timeout)
93
+ self.so_timeout = timeout * 1000
94
+ end
95
+
96
+ private
97
+ def set_host_parameter(parameter_name, host)
98
+ uri = URI.parse host
99
+ params.set_parameter(parameter_name, HTTP::HttpHost.new(uri.host, uri.port, uri.scheme))
100
+ end
101
+
102
+ def params
103
+ @params ||= default_params
104
+ end
105
+
106
+ def default_params
107
+ params = BasicHttpParams.new
108
+ DefaultHttpClient.set_default_http_params(params)
109
+ params
110
+ end
111
+ end
112
+ end
113
+
114
+ class Integer
115
+ def add_to_params(params, param_name)
116
+ params.set_int_parameter(param_name, self)
117
+ end
118
+ end
119
+
120
+ class TrueClass
121
+ def add_to_params(params, param_name)
122
+ params.set_boolean_parameter(param_name, self)
123
+ end
124
+ end
125
+
126
+ class FalseClass
127
+ def add_to_params(params, param_name)
128
+ params.set_boolean_parameter(param_name, self)
129
+ end
130
+ end
131
+
132
+ class Object
133
+ def add_to_params(params, param_name)
134
+ params.set_parameter(param_name, self)
135
+ end
136
+ end
@@ -2,86 +2,81 @@ require 'cgi'
2
2
 
3
3
  module HTTP
4
4
  class Request
5
- def self.create_type(&native_request_factory)
6
- Class.new do
7
- def initialize(uri, params = {})
8
- @uri = uri
9
- @params = params
10
- @headers = {}
11
- end
12
-
13
- def add_headers(headers)
14
- @headers.merge!(headers)
15
- end
16
-
17
- def content_type=(type)
18
- add_headers({'content-type' => type})
19
- end
20
-
21
- def body=(request_body)
22
- @body = request_body
23
- end
24
-
25
- def basic_auth(username, password)
26
- @username = username
27
- @password = password
28
- end
29
-
30
- def make_native_request(client, encoding, handler=nil)
31
- request = create_native_request(encoding)
32
- request.entity = StringEntity.new(@body) unless @body.nil?
33
-
34
- unless @username.nil?
35
- client.credentials_provider.set_credentials(AuthScope::ANY, UsernamePasswordCredentials.new(@username, @password))
36
- end
37
-
38
- if handler
39
- client.execute(request, handler)
40
- else
41
- client.execute(request)
42
- end
43
- end
44
-
45
- def parse_uri
46
- uri = URI.parse(@uri)
47
- [uri.scheme, uri.host, uri.port, uri.path, uri.query]
48
- rescue URI::InvalidURIError
49
- [nil, nil, nil, @uri, nil]
50
- end
51
-
52
- private
53
- define_method(:create_native_request) do |encoding|
54
- scheme, host, port, path, query = parse_uri
55
- query_params = CGI.parse(query || "").merge(@params)
56
-
57
- params = query_params.collect { |key, value| BasicNameValuePair.new(key.to_s, value.to_s) }
58
- request = native_request_factory.call(scheme, host, port, path, params, encoding)
59
-
60
- @headers.each { |name, value| request.add_header(name.to_s, value.to_s) }
61
-
62
- request
63
- end
5
+ attr_accessor :body, :encoding
6
+
7
+ def initialize(uri, params = {})
8
+ @scheme, @host, @port, @path, query = parse_uri(uri)
9
+ combined_params = CGI.parse(query || "").merge(params)
10
+ @query_params = combined_params.collect { |key, value| BasicNameValuePair.new(key.to_s, value.to_s) }
11
+
12
+ @encoding = "UTF-8"
13
+ @headers = {}
14
+ end
15
+
16
+ def add_headers(headers)
17
+ @headers.merge!(headers)
18
+ end
19
+
20
+ def content_type=(type)
21
+ add_headers({'content-type' => type})
22
+ end
23
+
24
+ def basic_auth(username, password)
25
+ @username = username
26
+ @password = password
27
+ end
28
+
29
+ def make_native_request(client)
30
+ request = create_native_request
31
+
32
+ request.entity = StringEntity.new(@body) unless @body.nil?
33
+ @headers.each { |name, value| request.add_header(name.to_s, value.to_s) }
34
+
35
+ unless @username.nil?
36
+ client.credentials_provider.set_credentials(AuthScope::ANY, UsernamePasswordCredentials.new(@username, @password))
64
37
  end
38
+
39
+ HTTP::Response.new(client.execute(request), client.cookie_store.cookies)
40
+ end
41
+
42
+ private
43
+ def create_uri(query_string = nil)
44
+ URIUtils.create_uri(@scheme, @host, @port, @path, query_string, nil)
45
+ end
46
+
47
+ def parse_uri(uri)
48
+ uri = URI.parse(uri)
49
+ [uri.scheme, uri.host, uri.port, uri.path, uri.query]
50
+ rescue URI::InvalidURIError
51
+ [nil, nil, nil, uri, nil]
65
52
  end
66
53
  end
67
54
 
68
- Post = Request.create_type do |scheme, host, port, path, params, encoding|
69
- post = HttpPost.new(URIUtils.create_uri(scheme, host, port, path, nil, nil))
70
- post.entity = UrlEncodedFormEntity.new(params, encoding)
71
- post
55
+ class Post < Request
56
+ def create_native_request
57
+ post = HttpPost.new(create_uri)
58
+ post.entity = UrlEncodedFormEntity.new(@query_params, encoding)
59
+ post
60
+ end
72
61
  end
73
62
 
74
- Get = Request.create_type do |scheme, host, port, path, params, encoding|
75
- query_string = URLEncodedUtils.format(params, encoding)
76
- HttpGet.new(URIUtils.create_uri(scheme, host, port, path, query_string, nil))
63
+ class Get < Request
64
+ def create_native_request
65
+ query_string = URLEncodedUtils.format(@query_params, encoding)
66
+ HttpGet.new(create_uri(query_string))
67
+ end
77
68
  end
78
69
 
79
- Delete = Request.create_type do |scheme, host, port, path|
80
- HttpDelete.new(URIUtils.create_uri(scheme, host, port, path, nil, nil))
70
+ class Delete < Request
71
+ def create_native_request
72
+ HttpDelete.new(create_uri)
73
+ end
81
74
  end
82
75
 
83
- Put = Request.create_type do |scheme, host, port, path|
84
- HttpPut.new(URIUtils.create_uri(scheme, host, port, path, nil, nil))
76
+ class Put < Request
77
+ def create_native_request
78
+ HttpPut.new(create_uri)
79
+ end
85
80
  end
86
81
 
87
82
  private
@@ -0,0 +1,93 @@
1
+ module HTTP
2
+ class Response
3
+ attr_reader :headers, :cookies
4
+
5
+ def initialize(native_response, cookies)
6
+ @native_response = native_response
7
+ @headers = Headers.new(native_response)
8
+ @cookies = Cookies.new(cookies)
9
+ end
10
+
11
+ def body
12
+ @body ||= EntityUtils.to_string(@native_response.entity)
13
+ end
14
+
15
+ def status_code
16
+ @native_response.status_line.status_code
17
+ end
18
+ end
19
+
20
+ module Status
21
+ ACCEPTED = 202
22
+ BAD_GATEWAY = 502
23
+ BAD_REQUEST = 400
24
+ CONFLICT = 409
25
+ CONTINUE = 100
26
+ CREATED = 201
27
+ EXPECTATION_FAILED = 417
28
+ FAILED_DEPENDENCY = 424
29
+ FORBIDDEN = 403
30
+ GATEWAY_TIMEOUT = 504
31
+ GONE = 410
32
+ HTTP_VERSION_NOT_SUPPORTED = 505
33
+ INSUFFICIENT_SPACE_ON_RESOURCE = 419
34
+ INSUFFICIENT_STORAGE = 507
35
+ INTERNAL_SERVER_ERROR = 500
36
+ LENGTH_REQUIRED = 411
37
+ LOCKED = 423
38
+ METHOD_FAILURE = 420
39
+ METHOD_NOT_ALLOWED = 405
40
+ MOVED_PERMANENTLY = 301
41
+ MOVED_TEMPORARILY = 302
42
+ MULTI_STATUS = 207
43
+ MULTIPLE_CHOICES = 300
44
+ NO_CONTENT = 204
45
+ NON_AUTHORITATIVE_INFORMATION = 203
46
+ NOT_ACCEPTABLE = 406
47
+ NOT_FOUND = 404
48
+ NOT_IMPLEMENTED = 501
49
+ NOT_MODIFIED = 304
50
+ OK = 200
51
+ PARTIAL_CONTENT = 206
52
+ PAYMENT_REQUIRED = 402
53
+ PRECONDITION_FAILED = 412
54
+ PROCESSING = 102
55
+ PROXY_AUTHENTICATION_REQUIRED = 407
56
+ REQUEST_TIMEOUT = 408
57
+ REQUEST_TOO_LONG = 413
58
+ REQUEST_URI_TOO_LONG = 414
59
+ REQUESTED_RANGE_NOT_SATISFIABLE = 416
60
+ RESET_CONTENT = 205
61
+ SEE_OTHER = 303
62
+ SERVICE_UNAVAILABLE = 503
63
+ SWITCHING_PROTOCOLS = 101
64
+ TEMPORARY_REDIRECT = 307
65
+ UNAUTHORIZED = 401
66
+ UNPROCESSABLE_ENTITY = 422
67
+ UNSUPPORTED_MEDIA_TYPE = 415
68
+ USE_PROXY = 305
69
+ end
70
+
71
+ private
72
+ EntityUtils = org.apache.http.util.EntityUtils
73
+
74
+ class Headers
75
+ def initialize(native_response)
76
+ @native_response = native_response
77
+ end
78
+
79
+ def [](header_name)
80
+ @native_response.get_first_header(header_name).value
81
+ end
82
+ end
83
+
84
+ class Cookies
85
+ def initialize(cookies)
86
+ @cookies = cookies
87
+ end
88
+
89
+ def [](cookie_name)
90
+ @cookies.find {|cookie| cookie.name == cookie_name }.value
91
+ end
92
+ end
93
+ end
@@ -7,7 +7,7 @@ class BasicAuthTest < Test::Unit::TestCase
7
7
 
8
8
  response = @client.execute(get)
9
9
 
10
- assert_equal("Logged In", response)
10
+ assert_equal("Logged In", response.body)
11
11
  end
12
12
 
13
13
  def setup
@@ -0,0 +1,142 @@
1
+ require 'helper'
2
+
3
+ class TestClientConfiguration < Test::Unit::TestCase
4
+ def test_timeout
5
+ client = HTTP::Client.new(:default_host => "http://localhost:8080", :timeout_in_seconds => 2)
6
+
7
+ assert_raises(Timeout::Error) do
8
+ client.get("/slow", :sleep => "30")
9
+ end
10
+ end
11
+
12
+ def test_protocol_version
13
+ config = HTTP::ClientConfiguration.new(:protocol_version => "HTTP 1.0")
14
+ assert_equal(config.protocol_version.to_s, "HTTP/1.0")
15
+ end
16
+
17
+ def test_strict_transfer_encodeing
18
+ config = HTTP::ClientConfiguration.new(:strict_transfer_encoding => true)
19
+ assert_equal(config.strict_transfer_encoding, true)
20
+ end
21
+
22
+ def test_http_element_charset
23
+ config = HTTP::ClientConfiguration.new(:http_element_charset => "ASCII")
24
+ assert_equal(config.http_element_charset, "ASCII")
25
+ end
26
+
27
+ def test_use_expect_continue
28
+ config = HTTP::ClientConfiguration.new(:use_expect_continue => true)
29
+ assert_equal(config.use_expect_continue, true)
30
+ end
31
+
32
+ def test_wait_for_continue
33
+ config = HTTP::ClientConfiguration.new(:wait_for_continue => true)
34
+ assert_equal(config.wait_for_continue, true)
35
+ end
36
+
37
+ def test_user_agent
38
+ user_agent_name = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3"
39
+ config = HTTP::ClientConfiguration.new(:user_agent => user_agent_name)
40
+ assert_equal(config.user_agent, user_agent_name)
41
+ end
42
+
43
+ def test_tcp_nodelay
44
+ config = HTTP::ClientConfiguration.new(:tcp_nodelay => true)
45
+ assert_equal(config.tcp_nodelay, true)
46
+ end
47
+
48
+ def test_so_linger
49
+ config = HTTP::ClientConfiguration.new(:so_linger => 3000)
50
+ assert_equal(config.so_linger, 3000)
51
+ end
52
+
53
+ def test_so_reuseaddr
54
+ config = HTTP::ClientConfiguration.new(:so_reuseaddr => true)
55
+ assert_equal(config.so_reuseaddr, true)
56
+ end
57
+
58
+ def test_socket_buffer_size
59
+ config = HTTP::ClientConfiguration.new(:socket_buffer_size => 10000)
60
+ assert_equal(config.socket_buffer_size, 10000)
61
+ end
62
+
63
+ def test_connection_timeout
64
+ config = HTTP::ClientConfiguration.new(:connection_timeout => 2)
65
+ assert_equal(config.connection_timeout, 2)
66
+ end
67
+
68
+ def test_max_line_length
69
+ config = HTTP::ClientConfiguration.new(:max_line_length => 2)
70
+ assert_equal(config.max_line_length, 2)
71
+ end
72
+
73
+ def test_max_header_count
74
+ config = HTTP::ClientConfiguration.new(:max_header_count => 10)
75
+ assert_equal(config.max_header_count, 10)
76
+ end
77
+
78
+ def test_stale_connection_check
79
+ config = HTTP::ClientConfiguration.new(:stale_connection_check => true)
80
+ assert_equal(config.stale_connection_check, true)
81
+ end
82
+
83
+ def test_local_address
84
+ config = HTTP::ClientConfiguration.new(:local_address => "127.0.0.1")
85
+ assert_equal(config.local_address.get_host_address, "127.0.0.1")
86
+ end
87
+
88
+ def test_default_proxy
89
+ config = HTTP::ClientConfiguration.new(:default_proxy => "http://127.0.0.1:8080")
90
+ assert_equal(config.default_proxy.to_s, "http://127.0.0.1:8080")
91
+ end
92
+
93
+ def test_date_patterns
94
+ config = HTTP::ClientConfiguration.new(:date_patterns => ["MDy"])
95
+ assert(config.date_patterns.include? 'MDy')
96
+ end
97
+
98
+ def test_single_cookie_header
99
+ config = HTTP::ClientConfiguration.new(:single_cookie_header => true)
100
+ assert_equal(config.single_cookie_header, true)
101
+ end
102
+
103
+ def test_credential_charset
104
+ config = HTTP::ClientConfiguration.new(:credential_charset => "ASCII")
105
+ assert_equal(config.credential_charset, "ASCII")
106
+ end
107
+
108
+ def test_cookie_policy
109
+ config = HTTP::ClientConfiguration.new(:cookie_policy => "RFC2109")
110
+ assert_equal(config.cookie_policy, "RFC2109")
111
+ end
112
+
113
+ def test_handle_authentication
114
+ config = HTTP::ClientConfiguration.new(:handle_authentication => true)
115
+ assert_equal(config.handle_authentication, true)
116
+ end
117
+
118
+ def test_handle_redirects
119
+ config = HTTP::ClientConfiguration.new(:handle_redirects => true)
120
+ assert_equal(config.handle_redirects, true)
121
+ end
122
+
123
+ def test_max_redirects
124
+ config = HTTP::ClientConfiguration.new(:max_redirects => 1)
125
+ assert_equal(config.max_redirects, 1)
126
+ end
127
+
128
+ def test_allow_circular_redirects
129
+ config = HTTP::ClientConfiguration.new(:allow_circular_redirects => true)
130
+ assert_equal(config.allow_circular_redirects, true)
131
+ end
132
+
133
+ def test_virtual_host
134
+ config = HTTP::ClientConfiguration.new(:virtual_host => "http://127.0.0.1:80")
135
+ assert_equal(config.virtual_host.to_s, "http://127.0.0.1:80")
136
+ end
137
+
138
+ def test_default_host
139
+ config = HTTP::ClientConfiguration.new(:default_host => "http://localhost:8080")
140
+ assert_equal(config.default_host.to_s, "http://localhost:8080")
141
+ end
142
+ end
@@ -1,12 +1,12 @@
1
1
  require 'helper'
2
2
 
3
- class TestClientHeaders < Test::Unit::TestCase
3
+ class ClientHeadersTest < Test::Unit::TestCase
4
4
  def test_get_headers
5
5
  get = HTTP::Get.new("/echo_header")
6
6
  get.add_headers(:test_header => "get testing")
7
7
 
8
8
  response = @client.execute(get)
9
- assert_equal("get testing", response)
9
+ assert_equal("get testing", response.body)
10
10
  end
11
11
 
12
12
  def test_post_headers
@@ -14,7 +14,7 @@ class TestClientHeaders < Test::Unit::TestCase
14
14
  get.add_headers(:test_header => "post testing")
15
15
 
16
16
  response = @client.execute(get)
17
- assert_equal("post testing", response)
17
+ assert_equal("post testing", response.body)
18
18
  end
19
19
 
20
20
  def test_delete_headers
@@ -22,7 +22,7 @@ class TestClientHeaders < Test::Unit::TestCase
22
22
  get.add_headers(:test_header => "post testing")
23
23
 
24
24
  response = @client.execute(get)
25
- assert_equal("post testing", response)
25
+ assert_equal("post testing", response.body)
26
26
  end
27
27
 
28
28
  def test_put_headers
@@ -30,7 +30,7 @@ class TestClientHeaders < Test::Unit::TestCase
30
30
  get.add_headers(:test_header => "post testing")
31
31
 
32
32
  response = @client.execute(get)
33
- assert_equal("post testing", response)
33
+ assert_equal("post testing", response.body)
34
34
  end
35
35
 
36
36
  def test_multiple_calls_to_add_headers_should_prefer_last_set_of_headers
@@ -39,7 +39,7 @@ class TestClientHeaders < Test::Unit::TestCase
39
39
  get.add_headers(:test_header => "should prefer this one")
40
40
 
41
41
  response = @client.execute(get)
42
- assert_equal("should prefer this one", response)
42
+ assert_equal("should prefer this one", response.body)
43
43
  end
44
44
 
45
45
  def test_should_be_able_to_add_content_type
@@ -47,7 +47,7 @@ class TestClientHeaders < Test::Unit::TestCase
47
47
  get.content_type = 'text/xml'
48
48
 
49
49
  response = @client.execute(get)
50
- assert_equal('text/xml', response)
50
+ assert_equal('text/xml', response.body)
51
51
  end
52
52
 
53
53
  def setup
@@ -8,6 +8,13 @@ class CookieTest < Test::Unit::TestCase
8
8
  assert_equal("nom nom nom", result)
9
9
  end
10
10
 
11
+ def test_cookie_can_be_retrieved_from_response
12
+ get = HTTP::Get.new("/set_cookie", :cookie => "yum")
13
+ response = @client.execute(get)
14
+
15
+ assert_equal("yum", response.cookies["test_cookie"])
16
+ end
17
+
11
18
  def setup
12
19
  @client = HTTP::Client.new(:default_host => "http://localhost:8080", :cookie_policy => HTTP::CookiePolicy::BROWSER_COMPATIBILITY)
13
20
  end
@@ -5,16 +5,16 @@ class RequestEntityTest < Test::Unit::TestCase
5
5
  post = HTTP::Post.new("/body")
6
6
  post.body = "Here we are"
7
7
 
8
- result = @client.execute(post)
9
- assert_equal("Here we are", result)
8
+ response = @client.execute(post)
9
+ assert_equal("Here we are", response.body)
10
10
  end
11
11
 
12
12
  def test_put_request_body
13
13
  post = HTTP::Put.new("/body")
14
14
  post.body = "We are there"
15
15
 
16
- result = @client.execute(post)
17
- assert_equal("We are there", result)
16
+ response = @client.execute(post)
17
+ assert_equal("We are there", response.body)
18
18
  end
19
19
 
20
20
  def setup
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+
3
+ class ResponseTest < Test::Unit::TestCase
4
+
5
+ def test_response_body
6
+ get = HTTP::Get.new("/echo", :content => "baz")
7
+ response = @client.execute(get)
8
+ assert_equal("baz", response.body)
9
+ end
10
+
11
+ def test_response_code
12
+ get = HTTP::Get.new("/echo", :content => "baz")
13
+ response = @client.execute(get)
14
+ assert_equal(HTTP::Status::OK, response.status_code)
15
+ end
16
+
17
+ def setup
18
+ @client = HTTP::Client.new(:default_host => "http://localhost:8080")
19
+ end
20
+
21
+ def teardown
22
+ @client.shutdown
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require 'helper'
2
+
3
+ class ServerHeadersTest < Test::Unit::TestCase
4
+ def test_response_contains_server_headers
5
+ get = HTTP::Get.new("/set_header")
6
+ response = @client.execute(get)
7
+
8
+ assert_equal("FooBar", response.headers["Test-Header"])
9
+ end
10
+
11
+ def setup
12
+ @client = HTTP::Client.new(:default_host => "http://localhost:8080")
13
+ end
14
+
15
+ def teardown
16
+ @client.shutdown
17
+ end
18
+ end
@@ -11,9 +11,16 @@ module HTTP
11
11
  SERVER.mount('/redirect', RedirectServlet)
12
12
  SERVER.mount('/set_cookie', SetCookieServlet)
13
13
  SERVER.mount('/echo_cookie', EchoCookieServlet)
14
+ SERVER.mount('/set_header', SetHeaderServlet)
14
15
  Thread.new { SERVER.start }
15
16
  end
16
17
 
18
+ class SetHeaderServlet < WEBrick::HTTPServlet::AbstractServlet
19
+ def do_GET(request, response)
20
+ response["Test-Header"] = "FooBar"
21
+ end
22
+ end
23
+
17
24
  class SetCookieServlet < WEBrick::HTTPServlet::AbstractServlet
18
25
  def do_GET(request, response)
19
26
  response.cookies << WEBrick::Cookie.new("test_cookie", request.query['cookie'])
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jruby-httpclient
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.4.0
6
6
  platform: java
7
7
  authors:
8
8
  - Adam Esterline
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-28 00:00:00 -06:00
13
+ date: 2011-07-01 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -66,16 +66,19 @@ files:
66
66
  - jruby-httpclient.gemspec
67
67
  - lib/http_client.rb
68
68
  - lib/http_client/client.rb
69
+ - lib/http_client/client_configuration.rb
69
70
  - lib/http_client/methods.rb
70
- - lib/http_client/parameters.rb
71
+ - lib/http_client/response.rb
71
72
  - test/helper.rb
72
73
  - test/http_client/test_basic_auth.rb
73
74
  - test/http_client/test_basic_client_operations.rb
75
+ - test/http_client/test_client_configuration.rb
74
76
  - test/http_client/test_client_headers.rb
75
- - test/http_client/test_client_parameters.rb
76
77
  - test/http_client/test_cookies.rb
77
78
  - test/http_client/test_redirect.rb
78
79
  - test/http_client/test_request_entity.rb
80
+ - test/http_client/test_response.rb
81
+ - test/http_client/test_server_headers.rb
79
82
  - test/http_test_server.rb
80
83
  - vendor/commons-codec-1.4.jar
81
84
  - vendor/commons-logging-1.1.1.jar
@@ -1,121 +0,0 @@
1
- module HTTP
2
- BasicHttpParams = org.apache.http.params.BasicHttpParams
3
- HttpHost = org.apache.http.HttpHost
4
- CoreProtocolPNames = org.apache.http.params.CoreProtocolPNames
5
- CoreConnectionPNames = org.apache.http.params.CoreConnectionPNames
6
- ConnRoutePNames = org.apache.http.conn.params.ConnRoutePNames
7
- CookieSpecPNames = org.apache.http.cookie.params.CookieSpecPNames
8
- AuthPNames = org.apache.http.auth.params.AuthPNames
9
- ClientPNames = org.apache.http.client.params.ClientPNames
10
- CookiePolicy = org.apache.http.client.params.CookiePolicy
11
-
12
- module Parameters
13
- CLIENT_PARAMETERS = {
14
- :protocol_version => HTTP::CoreProtocolPNames::PROTOCOL_VERSION,
15
- :strict_transfer_encoding => HTTP::CoreProtocolPNames::STRICT_TRANSFER_ENCODING,
16
- :http_element_charset => HTTP::CoreProtocolPNames::HTTP_ELEMENT_CHARSET,
17
- :use_expect_continue => HTTP::CoreProtocolPNames::USE_EXPECT_CONTINUE,
18
- :wait_for_continue => HTTP::CoreProtocolPNames::WAIT_FOR_CONTINUE,
19
- :user_agent => HTTP::CoreProtocolPNames::USER_AGENT,
20
- :tcp_nodelay => HTTP::CoreConnectionPNames.TCP_NODELAY,
21
- :so_timeout => HTTP::CoreConnectionPNames.SO_TIMEOUT,
22
- :so_linger => HTTP::CoreConnectionPNames.SO_LINGER,
23
- :so_reuseaddr => HTTP::CoreConnectionPNames.SO_REUSEADDR,
24
- :socket_buffer_size => HTTP::CoreConnectionPNames.SOCKET_BUFFER_SIZE,
25
- :connection_timeout => HTTP::CoreConnectionPNames.CONNECTION_TIMEOUT,
26
- :max_line_length => HTTP::CoreConnectionPNames.MAX_LINE_LENGTH,
27
- :max_header_count => HTTP::CoreConnectionPNames.MAX_HEADER_COUNT,
28
- :stale_connection_check => HTTP::CoreConnectionPNames.STALE_CONNECTION_CHECK,
29
- # :forced_route => HTTP::ConnRoutePNames::FORCED_ROUTE, # not implemented
30
- :local_address => HTTP::ConnRoutePNames::LOCAL_ADDRESS,
31
- :default_proxy => HTTP::ConnRoutePNames::DEFAULT_PROXY,
32
- :date_patterns => HTTP::CookieSpecPNames::DATE_PATTERNS,
33
- :single_cookie_header => HTTP::CookieSpecPNames::SINGLE_COOKIE_HEADER,
34
- :credential_charset => HTTP::AuthPNames::CREDENTIAL_CHARSET,
35
- :cookie_policy => HTTP::ClientPNames::COOKIE_POLICY,
36
- :handle_authentication => HTTP::ClientPNames::HANDLE_AUTHENTICATION,
37
- :handle_redirects => HTTP::ClientPNames::HANDLE_REDIRECTS,
38
- :max_redirects => HTTP::ClientPNames::MAX_REDIRECTS,
39
- :allow_circular_redirects => HTTP::ClientPNames::ALLOW_CIRCULAR_REDIRECTS,
40
- :virtual_host => HTTP::ClientPNames::VIRTUAL_HOST,
41
- :default_host => HTTP::ClientPNames::DEFAULT_HOST
42
- # :default_headers => HTTP::ClientPNames::DEFAULT_HEADERS, # not implemented
43
- # :connection_manager_factory_class_name => HTTP::ClientPNames::CONNECTION_MANAGER_FACTORY_CLASS_NAME # not implemented
44
- }
45
-
46
- CLIENT_PARAMETERS.each do |method_name, param_class|
47
- define_method(method_name) do
48
- params.get_parameter param_class
49
- end
50
-
51
- define_method("#{method_name}=") do |arg|
52
- arg.add_to_params(params, CLIENT_PARAMETERS[method_name])
53
- end
54
- end
55
-
56
- def protocol_version=(version_string)
57
- protocol, major_version, minor_version = version_string.split(/[\.|\s|\/]/)
58
- params.set_parameter HTTP::CoreProtocolPNames::PROTOCOL_VERSION, org.apache.http.ProtocolVersion.new(protocol, major_version.to_i, minor_version.to_i)
59
- end
60
-
61
- def local_address=(local_addr_str)
62
- params.set_parameter HTTP::ConnRoutePNames::LOCAL_ADDRESS, java.net.InetAddress.getByName(local_addr_str)
63
- end
64
-
65
- def default_proxy=(host)
66
- set_host_parameter(HTTP::ConnRoutePNames::DEFAULT_PROXY, host)
67
- end
68
-
69
- def virtual_host=(host)
70
- set_host_parameter(HTTP::ClientPNames::VIRTUAL_HOST, host)
71
- end
72
-
73
- def default_host=(host)
74
- set_host_parameter(HTTP::ClientPNames::DEFAULT_HOST, host)
75
- end
76
-
77
- def timeout_in_seconds=(timeout)
78
- self.so_timeout = timeout * 1000
79
- end
80
-
81
- private
82
- def set_host_parameter(parameter_name, host)
83
- uri = URI.parse host
84
- params.set_parameter(parameter_name, HTTP::HttpHost.new(uri.host, uri.port, uri.scheme))
85
- end
86
-
87
- def params
88
- @params ||= default_params
89
- end
90
-
91
- def default_params
92
- params = BasicHttpParams.new
93
- DefaultHttpClient.set_default_http_params(params)
94
- params
95
- end
96
- end
97
- end
98
-
99
- class Integer
100
- def add_to_params(params, param_name)
101
- params.set_int_parameter(param_name, self)
102
- end
103
- end
104
-
105
- class TrueClass
106
- def add_to_params(params, param_name)
107
- params.set_boolean_parameter(param_name, self)
108
- end
109
- end
110
-
111
- class FalseClass
112
- def add_to_params(params, param_name)
113
- params.set_boolean_parameter(param_name, self)
114
- end
115
- end
116
-
117
- class Object
118
- def add_to_params(params, param_name)
119
- params.set_parameter(param_name, self)
120
- end
121
- end
@@ -1,201 +0,0 @@
1
- require 'helper'
2
-
3
- class TestClientParameters < Test::Unit::TestCase
4
- def test_timeout
5
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :timeout_in_seconds => 2)
6
-
7
- assert_raises(Timeout::Error) do
8
- client.get("/slow", :sleep => "30")
9
- end
10
- end
11
-
12
- def test_protocol_version
13
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :protocol_version => "HTTP 1.0")
14
- result = client.get("/echo", :content => "hello")
15
- # We did set the parameter, right?
16
- assert_equal(client.protocol_version.to_s, "HTTP/1.0")
17
- # Make sure the client is still working (badly set params would prevent this)
18
- assert_equal("hello", result)
19
- end
20
-
21
- def test_strict_transfer_encodeing
22
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :strict_transfer_encoding => true)
23
- result = client.get("/echo", :content => "hello")
24
- assert_equal(client.strict_transfer_encoding, true)
25
- assert_equal("hello", result)
26
- end
27
-
28
- def test_http_element_charset
29
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :http_element_charset => "ASCII")
30
- result = client.get("/echo", :content => "hello")
31
- assert_equal(client.http_element_charset, "ASCII")
32
- assert_equal("hello", result)
33
- end
34
-
35
- def test_use_expect_continue
36
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :use_expect_continue => true)
37
- result = client.get("/echo", :content => "hello")
38
- assert_equal(client.use_expect_continue, true)
39
- assert_equal("hello", result)
40
- end
41
-
42
- def test_wait_for_continue
43
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :wait_for_continue => true)
44
- result = client.get("/echo", :content => "hello")
45
- assert_equal(client.wait_for_continue, true)
46
- assert_equal("hello", result)
47
- end
48
-
49
- def test_user_agent
50
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :user_agent => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3")
51
- result = client.get("/echo", :content => "hello")
52
- assert_equal(client.user_agent, "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3")
53
- assert_equal("hello", result)
54
- end
55
-
56
- def test_tcp_nodelay
57
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :tcp_nodelay => true)
58
- result = client.get("/echo", :content => "hello")
59
- assert_equal(client.tcp_nodelay, true)
60
- assert_equal("hello", result)
61
- end
62
-
63
- def test_so_linger
64
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :so_linger => 3000)
65
- result = client.get("/echo", :content => "hello")
66
- assert_equal(client.so_linger, 3000)
67
- assert_equal("hello", result)
68
- end
69
-
70
- def test_so_reuseaddr
71
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :so_reuseaddr => true)
72
- result = client.get("/echo", :content => "hello")
73
- assert_equal(client.so_reuseaddr, true)
74
- assert_equal("hello", result)
75
- end
76
-
77
- def test_socket_buffer_size
78
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :socket_buffer_size => 10000)
79
- result = client.get("/echo", :content => "hello")
80
- assert_equal(client.socket_buffer_size, 10000)
81
- assert_equal("hello", result)
82
- end
83
-
84
- def test_connection_timeout
85
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :connection_timeout => 2)
86
- result = client.get("/echo", :content => "hello")
87
- assert_equal(client.connection_timeout, 2)
88
- assert_equal("hello", result)
89
- end
90
-
91
- def test_max_line_length
92
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :max_line_length => 2)
93
- result = client.get("/echo", :content => "hello")
94
- assert_equal(client.max_line_length, 2)
95
- assert_equal("hello", result)
96
- end
97
-
98
- def test_max_header_count
99
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :max_header_count => 10)
100
- result = client.get("/echo", :content => "hello")
101
- assert_equal(client.max_header_count, 10)
102
- assert_equal("hello", result)
103
- end
104
-
105
- def test_stale_connection_check
106
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :stale_connection_check => true)
107
- result = client.get("/echo", :content => "hello")
108
- assert_equal(client.stale_connection_check, true)
109
- assert_equal("hello", result)
110
- end
111
-
112
- def test_local_address
113
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :local_address => "127.0.0.1")
114
- result = client.get("/echo", :content => "hello")
115
- assert_equal(client.local_address.get_host_address, "127.0.0.1")
116
- assert_equal("hello", result)
117
- end
118
-
119
- def test_default_proxy
120
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :default_proxy => "http://127.0.0.1:8080")
121
- result = client.get("/echo", :content => "hello")
122
- assert_equal(client.default_proxy.to_s, "http://127.0.0.1:8080")
123
- assert_equal("hello", result)
124
- end
125
-
126
- def test_date_patterns
127
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :date_patterns => ["MDy"])
128
- result = client.get("/echo", :content => "hello")
129
- assert(client.date_patterns.include? 'MDy')
130
- assert_equal("hello", result)
131
- end
132
-
133
- def test_single_cookie_header
134
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :single_cookie_header => true)
135
- result = client.get("/echo", :content => "hello")
136
- assert_equal(client.single_cookie_header, true)
137
- assert_equal("hello", result)
138
- end
139
-
140
- def test_credential_charset
141
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :credential_charset => "ASCII")
142
- result = client.get("/echo", :content => "hello")
143
- assert_equal(client.credential_charset, "ASCII")
144
- assert_equal("hello", result)
145
- end
146
-
147
- def test_cookie_policy
148
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :cookie_policy => "RFC2109")
149
- result = client.get("/echo", :content => "hello")
150
- assert_equal(client.cookie_policy, "RFC2109")
151
- assert_equal("hello", result)
152
- end
153
-
154
- def test_handle_authentication
155
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :handle_authentication => true)
156
- result = client.get("/echo", :content => "hello")
157
- assert_equal(client.handle_authentication, true)
158
- assert_equal("hello", result)
159
- end
160
-
161
- def test_handle_redirects
162
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :handle_redirects => true)
163
- result = client.get("/echo", :content => "hello")
164
- assert_equal(client.handle_redirects, true)
165
- assert_equal("hello", result)
166
- end
167
-
168
- def test_max_redirects
169
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :max_redirects => 1)
170
- result = client.get("/echo", :content => "hello")
171
- assert_equal(client.max_redirects, 1)
172
- assert_equal("hello", result)
173
- end
174
-
175
- def test_allow_circular_redirects
176
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :allow_circular_redirects => true)
177
- result = client.get("/echo", :content => "hello")
178
- assert_equal(client.allow_circular_redirects, true)
179
- assert_equal("hello", result)
180
- end
181
-
182
- def test_virtual_host
183
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :virtual_host => "http://127.0.0.1:80")
184
- result = client.get("/echo", :content => "hello")
185
- assert_equal(client.virtual_host.to_s, "http://127.0.0.1:80")
186
- assert_equal("hello", result)
187
- end
188
-
189
- def test_default_host
190
- client = HTTP::Client.new(:default_host => "http://localhost:8080")
191
- result = client.get("/echo", :content => "hello")
192
- assert_equal(client.default_host.to_s, "http://localhost:8080")
193
- assert_equal("hello", result)
194
- end
195
-
196
- def test_disable_response_handler
197
- client = HTTP::Client.new(:default_host => "http://localhost:8080", :disable_response_handler => true)
198
- result = client.get("/echo", :content => "hello")
199
- assert_equal(Java::OrgApacheHttpMessage::BasicHttpResponse, result.class)
200
- end
201
- end