01: /*
02: * JBoss, Home of Professional Open Source.
03: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
04: * as indicated by the @author tags. See the copyright.txt file in the
05: * distribution for a full listing of individual contributors.
06: *
07: * This is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU Lesser General Public License as
09: * published by the Free Software Foundation; either version 2.1 of
10: * the License, or (at your option) any later version.
11: *
12: * This software is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this software; if not, write to the Free
19: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21: */
22: package org.jboss.mq.il.http;
23:
24: import java.io.ObjectInputStream;
25: import java.io.ObjectOutputStream;
26: import java.net.HttpURLConnection;
27: import java.net.MalformedURLException;
28: import java.net.URL;
29:
30: import org.jboss.invocation.http.interfaces.Util;
31: import org.jboss.logging.Logger;
32:
33: /**
34: * Utility class that provides HTTP functionality. This class is modeled after
35: * Scott's Util class in org.jboss.invocation.http.interfaces.Util, however,
36: * that class deals with Invocation object, while this handles HTTPILRequest
37: * objects. Other then that, it is a pretty close reproduction.
38: *
39: * @author Nathan Phelps (nathan@jboss.org)
40: * @version $Revision: 57198 $
41: * @created January 15, 2003
42: */
43: public class HTTPClient {
44: private static final String CONTENT_TYPE = "application/x-java-serialized-object; class=org.jboss.mq.il.http.HTTPILRequest";
45:
46: private static Logger log = Logger.getLogger(HTTPClient.class);
47:
48: public static Object post(URL url, HTTPILRequest request)
49: throws Exception {
50: if (log.isTraceEnabled()) {
51: log.trace("post(URL " + url.toString() + ", HTTPILRequest "
52: + request.toString() + ")");
53: }
54: HttpURLConnection connection = (HttpURLConnection) url
55: .openConnection();
56: Util.configureHttpsHostVerifier(connection);
57:
58: connection.setDoInput(true);
59: connection.setDoOutput(true);
60: connection.setUseCaches(false);
61: connection.setRequestProperty("ContentType", CONTENT_TYPE);
62: connection.setRequestMethod("POST");
63: ObjectOutputStream outputStream = new ObjectOutputStream(
64: connection.getOutputStream());
65: outputStream.writeObject(request);
66: outputStream.close();
67: ObjectInputStream inputStream = new ObjectInputStream(
68: connection.getInputStream());
69: HTTPILResponse response = (HTTPILResponse) inputStream
70: .readObject();
71: inputStream.close();
72: Object responseValue = response.getValue();
73: if (responseValue instanceof Exception) {
74: throw (Exception) responseValue;
75: }
76: return responseValue;
77: }
78:
79: public static URL resolveServerUrl(String url)
80: throws MalformedURLException {
81: return Util.resolveURL(url);
82: }
83: }
|