1 package org.opensrf.net.http;
3 import org.opensrf.util.*;
6 import java.util.LinkedList;
7 import java.net.HttpURLConnection;
9 public abstract class HttpRequest {
11 /** OpenSRF service. */
12 protected String service;
13 /** OpenSRF method. */
14 protected Method method;
15 /** Connection to server. */
16 protected HttpURLConnection urlConn;
17 /** Connection manager. */
18 protected HttpConnection httpConn;
23 * Responses are not kept after being passed to onResponse .
25 protected List<Object> responseList;
27 /** True if all responses data has been read and delivered */
28 protected boolean complete;
30 // use a no-op handler by default
31 protected HttpRequestHandler handler = new HttpRequestHandler() {};
33 public HttpRequest() {
42 * @param conn Connection
43 * @param service The OpenSRF service.
44 * @param method The method to send to the server.
46 public HttpRequest(HttpConnection conn, String service, Method method) {
49 this.service = service;
54 * Send a request asynchronously (via threads).
56 * @param handler Manages responses
58 public void sendAsync(final HttpRequestHandler handler) {
60 this.handler = handler;
61 httpConn.manageAsyncRequest(this);
64 protected void pushResponse(Object response) {
65 if (responseList == null)
66 responseList = new LinkedList<Object>();
67 responseList.add(response);
70 protected List responses() {
74 protected Object nextResponse() {
75 if (complete || responseList == null)
77 if (responseList.size() > 0)
78 return responseList.remove(0);
83 * Send a request to the server.
85 public abstract GatewayRequest send() throws java.io.IOException;
88 * Receive one response from the server.
90 * @return The response object
92 public abstract Object recv() throws java.io.IOException;