📄 httpclient.java
字号:
/*
* $Id: HttpClient.java,v 1.4 2003/11/13 04:19:31 ajzeneski Exp $
*
* Copyright (c) 2001, 2002 The Open For Business Project - www.ofbiz.org
*
* 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 org.ofbiz.base.util;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Send HTTP GET/POST requests.
*
* @author <a href="mailto:jaz@ofbiz.org">Andy Zeneski</a>
* @version $Revision: 1.4 $
* @since 2.0
*/
public class HttpClient {
public static final String module = HttpClient.class.getName();
private int timeout = 30000;
private boolean debug = false;
private boolean lineFeed = true;
private boolean followRedirects = true;
private String url = null;
private String rawStream = null;
private String clientCertAlias = null;
private Map parameters = null;
private Map headers = null;
private URL requestUrl = null;
private URLConnection con = null;
/** Creates an empty HttpClient object. */
public HttpClient() {}
/** Creates a new HttpClient object. */
public HttpClient(URL url) {
this.url = url.toExternalForm();
}
/** Creates a new HttpClient object. */
public HttpClient(String url) {
this.url = url;
}
/** Creates a new HttpClient object. */
public HttpClient(String url, Map parameters) {
this.url = url;
this.parameters = parameters;
}
/** Creates a new HttpClient object. */
public HttpClient(URL url, Map parameters) {
this.url = url.toExternalForm();
this.parameters = parameters;
}
/** Creates a new HttpClient object. */
public HttpClient(String url, Map parameters, Map headers) {
this.url = url;
this.parameters = parameters;
this.headers = headers;
}
/** Creates a new HttpClient object. */
public HttpClient(URL url, Map parameters, Map headers) {
this.url = url.toExternalForm();
this.parameters = parameters;
this.headers = headers;
}
/** When true overrides Debug.verboseOn() and forces debugging for this instance */
public void setDebug(boolean debug) {
this.debug = debug;
}
/** Sets the timeout for waiting for the connection (default 30sec) */
public void setTimeout(int timeout) {
this.timeout = timeout;
}
/** Enables this request to follow redirect 3xx codes (default true) */
public void followRedirects(boolean followRedirects) {
this.followRedirects = followRedirects;
}
/** Turns on or off line feeds in the request. (default is on) */
public void setLineFeed(boolean lineFeed) {
this.lineFeed = lineFeed;
}
/** Set the raw stream for posts. */
public void setRawStream(String stream) {
this.rawStream = stream;
}
/** Set the URL for this request. */
public void setUrl(URL url) {
this.url = url.toExternalForm();
}
/** Set the URL for this request. */
public void setUrl(String url) {
this.url = url;
}
/** Set the parameters for this request. */
public void setParameters(Map parameters) {
this.parameters = parameters;
}
/** Set an individual parameter for this request. */
public void setParameter(String name, String value) {
if (parameters == null)
parameters = new HashMap();
parameters.put(name, value);
}
/** Set the headers for this request. */
public void setHeaders(Map headers) {
this.headers = headers;
}
/** Set an individual header for this request. */
public void setHeader(String name, String value) {
if (headers == null)
headers = new HashMap();
headers.put(name, value);
}
/** Return a Map of headers. */
public Map getHeaders() {
return headers;
}
/** Return a Map of parameters. */
public Map getParameters() {
return parameters;
}
/** Return a string representing the requested URL. */
public String getUrl() {
return url;
}
/** Sets the client certificate alias (from the keystore) to use for this SSL connection. */
public void setClientCertificateAlias(String alias) {
this.clientCertAlias = alias;
}
/** Returns the alias of the client certificate to be used for this SSL connection. */
public String getClientCertificateAlias() {
return this.clientCertAlias;
}
/** Invoke HTTP request GET. */
public String get() throws HttpClientException {
return sendHttpRequest("get");
}
/** Invoke HTTP request GET. */
public InputStream getStream() throws HttpClientException {
return sendHttpRequestStream("get");
}
/** Invoke HTTP request POST. */
public String post() throws HttpClientException {
return sendHttpRequest("post");
}
/** Invoke HTTP request POST and pass raw stream. */
public String post(String stream) throws HttpClientException {
this.rawStream = stream;
return sendHttpRequest("post");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -