All Downloads are FREE. Search and download functionalities are using the official Maven repository.

microsoft.exchange.webservices.data.core.request.HttpWebRequest Maven / Gradle / Ivy

There is a newer version: 2.15
Show newest version
/*
 * The MIT License
 * Copyright (c) 2012 Microsoft Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package microsoft.exchange.webservices.data.core.request;

import microsoft.exchange.webservices.data.EWSConstants;
import microsoft.exchange.webservices.data.core.WebProxy;
import microsoft.exchange.webservices.data.core.exception.http.EWSHttpException;

import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Map;

/**
 * The Class HttpWebRequest.
 */
public abstract class HttpWebRequest implements Closeable {

  /**
   * The url.
   */
  private URL url;

  /**
   * The pre authenticate.
   */
  private boolean preAuthenticate;

  /**
   * The timeout.
   */
  private int timeout;

  /**
   * The content type.
   */
  private String contentType = "text/xml; charset=utf-8";

  /**
   * The accept.
   */
  private String accept = "text/xml";

  /**
   * The user agent.
   */
  private String userAgent = "EWS SDK";

  /**
   * The allow auto redirect.
   */
  private boolean allowAutoRedirect;

  /**
   * The keep alive.
   */
  private boolean keepAlive = true;

  /**
   * The accept gzip encoding.
   */
  private boolean acceptGzipEncoding;

  /**
   * The use default credential.
   */
  private boolean useDefaultCredentials;

  private boolean allowAuthentication = true;

  /**
   * The user name.
   */
  private String username;

  /**
   * The password.
   */
  private String password;

  /**
   * The domain.
   */
  private String domain;

  /**
   * The request Method.
   */
  private String requestMethod = "POST";

  /**
   * The request headers.
   */
  private Map headers;

  /**
   * The Web Proxy.
   */
  private WebProxy proxy;

  /**
   * Gets the Web Proxy.
   *
   * @return the proxy
   */
  public WebProxy getProxy() {
    return proxy;
  }

  /**
   * Sets the Web Proxy.
   *
   * @param proxy The Web Proxy
   */
  public void setProxy(WebProxy proxy) {
    this.proxy = proxy;
  }

  /**
   * Checks if is http scheme.
   *
   * @return true, if is http scheme
   */
  public boolean isHttpScheme() {
    return getUrl().getProtocol().equalsIgnoreCase(EWSConstants.HTTP_SCHEME);
  }

  /**
   * Checks if is https scheme.
   *
   * @return true, if is https scheme
   */
  public boolean isHttpsScheme() {
    return getUrl().getProtocol().equalsIgnoreCase(EWSConstants.HTTPS_SCHEME);
  }

  /**
   * Gets the user name.
   *
   * @return the user name
   */
  public String getUsername() {
    return username;
  }

  /**
   * Sets the user name.
   *
   * @param username the new user name
   */
  public void setUsername(String username) {
    this.username = username;
  }

  /**
   * Gets the password.
   *
   * @return the password
   */
  public String getPassword() {
    return password;
  }

  /**
   * Sets the password.
   *
   * @param password the new password
   */
  public void setPassword(String password) {
    this.password = password;
  }

  /**
   * Gets the domain.
   *
   * @return the domain
   */
  public String getDomain() {
    return domain;
  }

  /**
   * Sets the domain.
   *
   * @param domain the new domain
   */
  public void setDomain(String domain) {
    this.domain = domain;
  }

  /**
   * Gets the url.
   *
   * @return the url
   */
  public URL getUrl() {

    return url;
  }

  /**
   * Sets the url.
   *
   * @param url the new url
   */
  public void setUrl(URL url) {
    this.url = url;
  }

  /**
   * Whether to use preemptive authentication. Currently not implemented, though.
   */
  public boolean isPreAuthenticate() {
    return preAuthenticate;
  }

  /**
   * Whether to use preemptive authentication. Currently not implemented, though.
   */
  public void setPreAuthenticate(boolean preAuthenticate) {
    this.preAuthenticate = preAuthenticate;
  }

  /**
   * Gets the timeout.
   *
   * @return the timeout
   */
  public int getTimeout() {
    return timeout;
  }

  /**
   * Sets the timeout.
   *
   * @param timeout the new timeout
   */
  public void setTimeout(int timeout) {
    this.timeout = timeout;
  }

  /**
   * Gets the content type.
   *
   * @return the content type
   */
  public String getContentType() {
    return contentType;
  }

  /**
   * Sets the content type.
   *
   * @param contentType the new content type
   */
  public void setContentType(String contentType) {
    this.contentType = contentType;
  }

  /**
   * Gets the accept.
   *
   * @return the accept
   */
  public String getAccept() {
    return accept;
  }

  /**
   * Sets the accept.
   *
   * @param accept the new accept
   */
  public void setAccept(String accept) {
    this.accept = accept;
  }

  /**
   * Gets the user agent.
   *
   * @return the user agent
   */
  public String getUserAgent() {
    return userAgent;
  }

  /**
   * Sets the user agent.
   *
   * @param userAgent the new user agent
   */
  public void setUserAgent(String userAgent) {
    this.userAgent = userAgent;
  }

  /**
   * Checks if is allow auto redirect.
   *
   * @return true, if is allow auto redirect
   */
  public boolean isAllowAutoRedirect() {
    return allowAutoRedirect;
  }

  /**
   * Sets the allow auto redirect.
   *
   * @param allowAutoRedirect the new allow auto redirect
   */
  public void setAllowAutoRedirect(boolean allowAutoRedirect) {
    this.allowAutoRedirect = allowAutoRedirect;
  }

  /**
   * Checks if is keep alive.
   *
   * @return true, if is keep alive
   */
  public boolean isKeepAlive() {
    return keepAlive;
  }

  /**
   * Sets the keep alive.
   *
   * @param keepAlive the new keep alive
   */
  public void setKeepAlive(boolean keepAlive) {
    this.keepAlive = keepAlive;
  }

  /**
   * Checks if is accept gzip encoding.
   *
   * @return true, if is accept gzip encoding
   */
  public boolean isAcceptGzipEncoding() {
    return acceptGzipEncoding;
  }

  /**
   * Sets the accept gzip encoding.
   *
   * @param acceptGzipEncoding the new accept gzip encoding
   */
  public void setAcceptGzipEncoding(boolean acceptGzipEncoding) {
    this.acceptGzipEncoding = acceptGzipEncoding;
  }

  /**
   * Checks if is use default credential.
   *
   * @return true, if is use default credential
   */
  public boolean isUseDefaultCredentials() {
    return useDefaultCredentials;
  }

  /**
   * Sets the use default credential.
   *
   * @param useDefaultCredentials the new use default credential
   */
  public void setUseDefaultCredentials(boolean useDefaultCredentials) {
    this.useDefaultCredentials = useDefaultCredentials;
  }

  /**
   * Whether web service authentication is allowed.
   * This can be set to {@code false} to disallow sending credential with this request.
   *
   * This is useful for the autodiscover request to the legacy HTTP url, because this single request doesn't
   * require authentication and we don't want to send credential over HTTP.
   *
   * @return {@code true} if authentication is allowed.
   */
  public boolean isAllowAuthentication() {
    return allowAuthentication;
  }

  /**
   * Whether web service authentication is allowed.
   * This can be set to {@code false} to disallow sending credential with this request.
   *
   * This is useful for the autodiscover request to the legacy HTTP url, because this single request doesn't
   * require authentication and we don't want to send credential over HTTP.
   *
   * Default is {@code true}.
   *
   * @param allowAuthentication {@code true} if authentication is allowed.
   */
  public void setAllowAuthentication(boolean allowAuthentication) {
    this.allowAuthentication = allowAuthentication;
  }

  /**
   * Gets the request method type.
   *
   * @return the request method type.
   */
  public String getRequestMethod() {
    return requestMethod;
  }

  /**
   * Sets the request method type.
   *
   * @param requestMethod the request method type.
   */
  public void setRequestMethod(String requestMethod) {
    this.requestMethod = requestMethod;
  }

  /**
   * Gets the Headers.
   *
   * @return the content type
   */
  public Map getHeaders() {
    return headers;
  }

  /**
   * Sets the Headers.
   *
   * @param headers The headers
   */
  public void setHeaders(Map headers) {
    this.headers = headers;
  }

  /**
   * Sets the credential.
   *
   * @param domain user domain
   * @param user   user name
   * @param pwd    password
   */
  public void setCredentials(String domain, String user, String pwd) {
    this.domain = domain;
    this.username = user;
    this.password = pwd;
  }

  /**
   * Gets the input stream.
   *
   * @return the input stream
   * @throws EWSHttpException the eWS http exception
   * @throws IOException the IO exception
   */
  public abstract InputStream getInputStream() throws EWSHttpException, IOException;

  /**
   * Gets the error stream.
   *
   * @return the error stream
   * @throws EWSHttpException the eWS http exception
   */
  public abstract InputStream getErrorStream() throws EWSHttpException;

  /**
   * Gets the output stream.
   *
   * @return the output stream
   * @throws EWSHttpException the eWS http exception
   */
  public abstract OutputStream getOutputStream() throws EWSHttpException;

  /**
   * Close.
   */
  public abstract void close() throws IOException;

  /**
   * Prepare connection.
   */
  public abstract void prepareConnection();

  /**
   * Gets the response headers.
   *
   * @return the response headers
   * @throws EWSHttpException the eWS http exception
   */
  public abstract Map getResponseHeaders()
      throws EWSHttpException;

  /**
   * Gets the content encoding.
   *
   * @return the content encoding
   * @throws EWSHttpException the EWS http exception
   */
  public abstract String getContentEncoding() throws EWSHttpException;

  /**
   * Gets the response content type.
   *
   * @return the response content type
   * @throws EWSHttpException the EWS http exception
   */
  public abstract String getResponseContentType() throws EWSHttpException;

  /**
   * Gets the response code.
   *
   * @return the response code
   * @throws EWSHttpException the EWS http exception
   */
  public abstract int getResponseCode() throws EWSHttpException;

  /**
   * Gets the response message.
   *
   * @return the response message
   * @throws EWSHttpException the EWS http exception
   */
  public abstract String getResponseText() throws EWSHttpException;

  /**
   * Gets the response header field.
   *
   * @param headerName the header name
   * @return the response header field
   * @throws EWSHttpException the EWS http exception
   */
  public abstract String getResponseHeaderField(String headerName)
      throws EWSHttpException;

  /**
   * Gets the request property.
   *
   * @return the request property
   * @throws EWSHttpException the EWS http exception
   */
  public abstract Map getRequestProperty()
      throws EWSHttpException;

  /**
   * Executes Request by sending request xml data to server.
   *
   * @throws EWSHttpException    the EWS http exception
   * @throws java.io.IOException the IO Exception
   */
  public abstract int executeRequest() throws EWSHttpException, IOException;

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy