다음은 아파치 HttpComponents HttpClient GET/POST 예제이다.
HttpMethod.java
public enum HttpMethod {
GET, POST
}
HttpClientWrapper.java
import java.util.Map;
public interface HttpClientWrapper {
String send(HttpMethod method, Map<String, Object> headers,
Map<String, Object> parameters, String uri);
}
ApacheHttpClientWrapper.java
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
public class ApacheHttpClientWrapper implements HttpClientWrapper {
private static final String DEFAULT_CHARSET = "UTF-8";
@Override
public String send(HttpMethod method, Map<String, Object> headers,
Map<String, Object> parameters, String uri) {
HttpClient httpClient = HttpClientBuilder.create().build();
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
for (Map.Entry<String, Object> parameter : parameters.entrySet()) {
nvps.add(new BasicNameValuePair(parameter.getKey(), parameter
.getValue().toString()));
}
HttpUriRequest request;
switch (method) {
case GET:
if (!nvps.isEmpty()) {
uri += "?" + URLEncodedUtils.format(nvps, DEFAULT_CHARSET);
}
HttpGet httpGet = new HttpGet(uri);
request = httpGet;
break;
case POST:
HttpPost httpPost = new HttpPost(uri);
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps,
DEFAULT_CHARSET));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
request = httpPost;
break;
default:
throw new IllegalArgumentException("Unsupported HTTP method: "
+ method);
}
for (Map.Entry<String, Object> header : headers.entrySet()) {
request.setHeader(header.getKey(), header.getValue().toString());
}
try {
HttpResponse httpResponse = httpClient.execute(request);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = httpEntity.getContent();
return IOUtils.toString(is);
} catch (ClientProtocolException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
HttpClientWrapperTest.java
import java.util.HashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
public class HttpClientWrapperTest {
HttpClientWrapper httpClient;
@Before
public void setUp() {
httpClient = new ApacheHttpClientWrapper();
}
@Test
public void sendGet() {
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("Header1", "headerValue1");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("parameter1", "parameterValue1");
String uri = "http://localhost:8080/test";
String response = httpClient.send(HttpMethod.GET, headers, parameters,
uri);
System.out.println(response);
}
@Test
public void sendPost() {
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("Header1", "headerValue1");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("parameter1", "parameterValue1");
String uri = "http://localhost:8080/test";
String response = httpClient.send(HttpMethod.POST, headers, parameters,
uri);
System.out.println(response);
}
}
Reference:
https://gist.github.com/rponte/1321371
댓글을 달아 주세요