package com.intuit.tank.okhttpclient;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.commons.codec.binary.Base64;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.tomcat.util.net.URL;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.intuit.tank.http.AuthCredentials;
import com.intuit.tank.http.AuthScheme;
import com.intuit.tank.http.BaseRequest;
import com.intuit.tank.http.BaseResponse;
import com.intuit.tank.http.TankCookie;
import com.intuit.tank.http.TankHttpClient;
import com.intuit.tank.test.TestGroups;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.MultipartBuilder;
import com.squareup.okhttp.RequestBody;
import okio.Buffer;
public class TankOkHttpClientTest {
@BeforeClass
public void init() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME).setLevel(Level.INFO);
ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig.
}
@Test(groups = TestGroups.FUNCTIONAL)
public void addAuth() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/basic-auth/test/test_pass");
request.getHttpclient().addAuth(AuthCredentials.builder().withUserName("test").withPassword("test_pass").withRealm("bogus").withScheme(AuthScheme.Basic).build());
request.doGet(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(401, response.getHttpCode());
request.getHttpclient().addAuth(AuthCredentials.builder().withUserName("test").withPassword("test_pass").withRealm("Fake Realm").withScheme(AuthScheme.Basic).build());
request.doGet(null);
response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertNotNull(response.getBody());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doDelete() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/delete");
request.doDelete(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doGet() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/get");
request.doGet(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertNotNull(response.getBody());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doPost() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/post");
request.setBody("hello world");
request.doPost(null);
BaseResponse response = request.getResponse();
Assert.assertTrue(response.getBody().contains("hello world"));
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertNotNull(response.getBody());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doPostMultipart() throws IOException {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/post");
request.setContentType(BaseRequest.CONTENT_TYPE_MULTIPART);
request.setBody(createMultiPartBody());
request.doPost(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertNotNull(response.getBody());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doPostMultipartWithFile() throws IOException {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/post");
request.setContentType(BaseRequest.CONTENT_TYPE_MULTIPART);
request.setBody(
"LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNzI2MTE1MzQ5Mjk4MjYNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY3JlYXRlTmV3U2NyaXB0Rm9ybSINCg0KY3JlYXRlTmV3U2NyaXB0Rm9ybQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNzI2MTE1MzQ5Mjk4MjYNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY3JlYXRlTmV3U2NyaXB0Rm9ybTpqX2lkdDUxOnNhdmVCdG4iDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNzI2MTE1MzQ5Mjk4MjYNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY3JlYXRlTmV3U2NyaXB0Rm9ybTpuYW1lVEYiDQoNClRlc3RNdWx0aVBhcnQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNyZWF0ZU5ld1NjcmlwdEZvcm06cHJvZHVjdE5hbWVDQl9mb2N1cyINCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE3MjYxMTUzNDkyOTgyNg0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJjcmVhdGVOZXdTY3JpcHRGb3JtOnByb2R1Y3ROYW1lQ0JfaW5wdXQiDQoNCkNBUw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNzI2MTE1MzQ5Mjk4MjYNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY3JlYXRlTmV3U2NyaXB0Rm9ybTpqX2lkdDg0Ig0KDQpVcGxvYWQgU2NyaXB0DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE3MjYxMTUzNDkyOTgyNg0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJjcmVhdGVOZXdTY3JpcHRGb3JtOmpfaWR0OTEiOyBmaWxlbmFtZT0ic2FtcGxlLnhtbCINCkNvbnRlbnQtVHlwZTogdGV4dC94bWwNCg0KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxzbnM6c2Vzc2lvbiB4bWxuczpzbnM9InVybjpwcm94eS9jb252ZXJzYXRpb24vdjEiIGZvbGxvd1JlZGlyZWN0cz0idHJ1ZSI+Cjx0cmFuc2FjdGlvbiB4bWxucz0idXJuOnByb3h5L2NvbnZlcnNhdGlvbi92MSI+CiAgICA8cmVxdWVzdD4KICAgICAgICA8cHJvdG9jb2w+aHR0cDwvcHJvdG9jb2w+CiAgICAgICAgPGZpcnN0TGluZT5HRVQgL3Byb2plY3RzIEhUVFAvMS4xPC9maXJzdExpbmU+CiAgICAgICAgPGhlYWRlcnM+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5Pkhvc3Q8L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5hVzUwWlhKdVlXd3RkR0Z1YXkxd2IyTXRNVEF4T1RneE56TTNPQzUxY3kxM1pYTjBMVEl1Wld4aUxtRnRZWHB2Ym1GM2N5NWpiMjA9PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PlVzZXItQWdlbnQ8L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5UVzk2YVd4c1lTODFMakFnS0ZkcGJtUnZkM01nVGxRZ05pNHhPeUJYVDFjMk5Ec2djblk2TkRFdU1Da2dSMlZqYTI4dk1qQXhNREF4TURFZ1JtbHlaV1p2ZUM4ME1TNHc8L3ZhbHVlPgogICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICAgICAgPGhlYWRlcj4KICAgICAgICAgICAgICAgIDxrZXk+QWNjZXB0PC9rZXk+CiAgICAgICAgICAgICAgICA8dmFsdWU+ZEdWNGRDOW9kRzFzTEdGd2NHeHBZMkYwYVc5dUwzaG9kRzFzSzNodGJDeGhjSEJzYVdOaGRHbHZiaTk0Yld3N2NUMHdMamtzS2k4cU8zRTlNQzQ0PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PkFjY2VwdC1MYW5ndWFnZTwva2V5PgogICAgICAgICAgICAgICAgPHZhbHVlPlpXNHRWVk1zWlc0N2NUMHdMalU9PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PkFjY2VwdC1FbmNvZGluZzwva2V5PgogICAgICAgICAgICAgICAgPHZhbHVlPlozcHBjQ3dnWkdWbWJHRjBaUT09PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PlJlZmVyZXI8L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5hSFIwY0RvdkwybHVkR1Z5Ym1Gc0xYUmhibXN0Y0c5akxURXdNVGs0TVRjek56Z3VkWE10ZDJWemRDMHlMbVZzWWk1aGJXRjZiMjVoZDNNdVkyOXRMM05qY21sd2RITXZZM0psWVhSbFRtVjNVMk55YVhCMExtcHpaajlqYVdROU1RPT08L3ZhbHVlPgogICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICAgICAgPGhlYWRlcj4KICAgICAgICAgICAgICAgIDxrZXk+Q29va2llPC9rZXk+CiAgICAgICAgICAgICAgICA8dmFsdWU+U2xORlUxTkpUMDVKUkQweU5VRXhNams1UVRBMU9EWkNSRVUwUkVNNFJrSTVNa1l5TVRCQlFqTkRRdz09PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PkNvbm5lY3Rpb248L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5hMlZsY0MxaGJHbDJaUT09PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PlgtUFJPWFktQVBQPC9rZXk+CiAgICAgICAgICAgICAgICA8dmFsdWU+Y21Wa2FYSmxZM1JEYjJ4c1lYQnpaUT09PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgICAgIDxoZWFkZXI+CiAgICAgICAgICAgICAgICA8a2V5PlgtUmVkaXJlY3QtTG9jYXRpb248L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5hSFIwY0RvdkwybHVkR1Z5Ym1Gc0xYUmhibXN0Y0c5akxURXdNVGs0TVRjek56Z3VkWE10ZDJWemRDMHlMbVZzWWk1aGJXRjZiMjVoZDNNdVkyOXRMM0J5YjJwbFkzUnpMdz09PC92YWx1ZT4KICAgICAgICAgICAgPC9oZWFkZXI+CiAgICAgICAgPC9oZWFkZXJzPgogICAgPC9yZXF1ZXN0PgogICAgPHJlc3BvbnNlPgogICAgICAgIDxmaXJzdExpbmU+SFRUUC8xLjEgMzA0IE5vdCBNb2RpZmllZDwvZmlyc3RMaW5lPgogICAgICAgIDxoZWFkZXJzPgogICAgICAgICAgICA8aGVhZGVyPgogICAgICAgICAgICAgICAgPGtleT5EYXRlPC9rZXk+CiAgICAgICAgICAgICAgICA8dmFsdWU+VjJWa0xDQXpNQ0JUWlhBZ01qQXhOU0F4T0Rvd09Ub3dNU0JIVFZRPTwvdmFsdWU+CiAgICAgICAgICAgIDwvaGVhZGVyPgogICAgICAgICAgICA8aGVhZGVyPgogICAgICAgICAgICAgICAgPGtleT5FVGFnPC9rZXk+CiAgICAgICAgICAgICAgICA8dmFsdWU+Vnk4aU1qWXdMVEUwTkRNd01qa3dPRFl3TURBaTwvdmFsdWU+CiAgICAgICAgICAgIDwvaGVhZGVyPgogICAgICAgICAgICA8aGVhZGVyPgogICAgICAgICAgICAgICAgPGtleT5TZXJ2ZXI8L2tleT4KICAgICAgICAgICAgICAgIDx2YWx1ZT5RWEJoWTJobExVTnZlVzkwWlM4eExqRT08L3ZhbHVlPgogICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICAgICAgPGhlYWRlcj4KICAgICAgICAgICAgICAgIDxrZXk+Q29ubmVjdGlvbjwva2V5PgogICAgICAgICAgICAgICAgPHZhbHVlPmEyVmxjQzFoYkdsMlpRPT08L3ZhbHVlPgogICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICA8L2hlYWRlcnM+CiAgICAgICAgPGJvZHk+PC9ib2R5PgogICAgPC9yZXNwb25zZT4KPC90cmFuc2FjdGlvbj4KPC9zbnM6c2Vzc2lvbj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNyZWF0ZU5ld1NjcmlwdEZvcm06Z3JvdXBUYWJsZTpmaWx0ZXJHcm91cE5hbWU6ZmlsdGVyIg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNyZWF0ZU5ld1NjcmlwdEZvcm06Z3JvdXBUYWJsZTpmaWx0ZXJHcm91cFByb2R1Y3Q6ZmlsdGVyIg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNyZWF0ZU5ld1NjcmlwdEZvcm06ZmlsdGVyVGFibGVJZDpmaWx0ZXJOYW1lOmZpbHRlciINCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE3MjYxMTUzNDkyOTgyNg0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJjcmVhdGVOZXdTY3JpcHRGb3JtOmZpbHRlclRhYmxlSWQ6ZmlsdGVyUHJvZHVjdDpmaWx0ZXIiDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xNzI2MTE1MzQ5Mjk4MjYNCkNvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY3JlYXRlTmV3U2NyaXB0Rm9ybTpmaWx0ZXJUYWJsZUlkOjA6al9pZHQxMDJfaW5wdXQiDQoNCm9uDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE3MjYxMTUzNDkyOTgyNg0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJjcmVhdGVOZXdTY3JpcHRGb3JtOmZpbHRlclRhYmxlSWQ6MTpqX2lkdDEwMl9pbnB1dCINCg0Kb24NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2DQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImNyZWF0ZU5ld1NjcmlwdEZvcm06ZmlsdGVyVGFibGVJZF9zY3JvbGxTdGF0ZSINCg0KMCwwDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTE3MjYxMTUzNDkyOTgyNg0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJqYXZheC5mYWNlcy5WaWV3U3RhdGUiDQoNCi0yMDU5ODE2MTg5MDc2NDYzMzg5Oi01NDAzNTEzNDYxNzE3MjAzMDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTcyNjExNTM0OTI5ODI2LS0NCg==");
request.doPost(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertNotNull(response.getBody());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void doPut() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/put");
request.setBody("helloKey=world");
request.doPut(null);
BaseResponse response = request.getResponse();
// System.out.println(response.getBody());
Assert.assertNotNull(response);
Assert.assertEquals(true, response.getResponseBody().contains("helloKey"));
Assert.assertEquals(200, response.getHttpCode());
}
@Test(groups = TestGroups.FUNCTIONAL)
public void clearSession() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/cookies");
request.getHttpclient().setCookie(TankCookie.builder().withName("test-cookie").withValue("test-value").withDomain("httpbin.org").withPath("/").build());
request.doGet(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertTrue(response.getBody().contains("test-cookie"));
request.getHttpclient().clearSession();
request.doGet(null);
response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertTrue(!response.getBody().contains("test-cookie"));
}
@Test(groups = TestGroups.FUNCTIONAL)
public void setCookie() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/cookies");
request.getHttpclient().setCookie(TankCookie.builder().withName("test-cookie").withValue("test-value").withDomain("httpbin.org").withPath("/").build());
request.getHttpclient().setCookie(TankCookie.builder().withName("test-cookie1").withValue("test-value1").withDomain("http2bin.org").withPath("/").build());
request.doGet(null);
BaseResponse response = request.getResponse();
Assert.assertNull(response.getCookie("test-cookie1"));
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertTrue(response.getBody().contains("test-cookie"));
request = getRequest(new TankOkHttpClient(), "http://http2bin.org/cookies");
request.getHttpclient().setCookie(TankCookie.builder().withName("test-cookie").withValue("test-value").withDomain("httpbin.org").withPath("/").build());
request.getHttpclient().setCookie(TankCookie.builder().withName("test-cookie1").withValue("test-value1").withDomain("http2bin.org").withPath("/").build());
request.doGet(null);
response = request.getResponse();
Assert.assertNull(response.getCookie("test-cookie"));
Assert.assertNotNull(response);
Assert.assertEquals(200, response.getHttpCode());
Assert.assertTrue(response.getBody().contains("test-cookie1"));
}
@Test(groups = TestGroups.FUNCTIONAL)
public void setHeader() {
BaseRequest request = getRequest(new TankOkHttpClient(), "http://httpbin.org/response-headers");
// pre-defined headers on the httpbin server to send back as a response
// header
request.addURLVariable("OkHttp_Respone_Header", "Set");
// Add a header to the request
request.addHeader("addRequestHeader", "RequestHeader");
request.doGet(null);
// Check for added request header
Assert.assertTrue(request.getHeaderInformation().containsKey("addRequestHeader"));
Assert.assertTrue(request.getHeaderInformation().containsValue("RequestHeader"));
// Check for response Header
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
Assert.assertNotNull(response.getHttpHeader("OkHttp_Respone_Header"));
Assert.assertEquals(200, response.getHttpCode());
// System.out.println(response.getHttpHeader("OkHttp_Respone_Header"));
Assert.assertTrue(response.getHttpHeader("OkHttp_Respone_Header").contains("Set"));
}
// @Test(groups = TestGroups.FUNCTIONAL)
// public void setProxy() {
// TankOkHttpClient okHttpClient = null;
//
// BaseRequest request = getRequest(new TankOkHttpClient(),
// "http://httpbin.org/ip");
// request.getHttpclient().setProxy("localhost", 8888);
// okHttpClient = (TankOkHttpClient) request.getHttpclient();
// request.doGet(null);
// BaseResponse response = request.getResponse();
// String responseBody = response.getBody();
// Assert.assertEquals(200, response.getHttpCode());
// Assert.assertNotNull(response);
// Assert.assertTrue(StringUtils.contains(okHttpClient.getProxyInfo(),
// "localhost"));
//
// // unset proxy settings
// request.getHttpclient().setProxy(null, -1);
// okHttpClient = (TankOkHttpClient) request.getHttpclient();
// request.doGet(null);
// response = request.getResponse();
// Assert.assertNotNull(response);
// Assert.assertEquals(200, response.getHttpCode());
// Assert.assertEquals("DIRECT", okHttpClient.getProxyInfo());
// Assert.assertEquals(responseBody, response.getBody());
// }
@Test(groups = TestGroups.MANUAL)
public void testSSL() {
BaseRequest request = getRequest(new TankOkHttpClient(), "https://www.pcwebshop.co.uk/");
request.doGet(null);
BaseResponse response = request.getResponse();
Assert.assertNotNull(response);
// Assert.assertEquals(response.getHttpCode(), 403);
}
private String createMultiPartBody() throws IOException {
MultipartBuilder multipartBuilder = new MultipartBuilder().type(MultipartBuilder.FORM);
multipartBuilder.addFormDataPart("textPart", null, RequestBody.create(MediaType.parse("application/atom+xml"), "<xml>here is sample xml</xml>"));
RequestBody requestBodyEntity = multipartBuilder.build();
Buffer buffer = new Buffer();
requestBodyEntity.writeTo(buffer);
String ret = new String();
ret = toBase64(buffer.readByteArray());
return ret;
}
/**
* Returns a string's base64 encoding
*
* @param toEncode
* @return base64 string
*/
private String toBase64(byte[] bytes) {
String ret = null;
try {
ret = new String(Base64.encodeBase64(bytes), Charset.forName("utf-8")).trim();
} catch (Exception e) {
throw new RuntimeException(e);
}
return ret;
}
private BaseRequest getRequest(TankHttpClient client, String url) {
try {
URL u = new URL(url);
BaseRequest request = new MockBaseRequest(client);
request.setHost(u.getHost());
request.setPath(u.getPath());
request.setProtocol(u.getProtocol());
request.setPort(u.getPort());
return request;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}