Java tutorial
/* NormalCommonTestCase.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.profile.restful.test; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; 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.HttpPut; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.deviceconnect.profile.AuthorizationProfileConstants; import org.deviceconnect.profile.DConnectProfileConstants; import org.json.JSONException; import org.json.JSONObject; /** * ?. * @author NTT DOCOMO, INC. */ public class NormalCommonTestCase extends RESTfulDConnectTestCase { /** * . * * @param tag */ public NormalCommonTestCase(final String tag) { super(tag); } /** * URL???????????????? * <p> * URL??????RFC3986 Appendix A???? * </p> * <pre> * ?HTTP * Method: GET * Path: /battery?deviceId&accessToken=xxxx * </pre> * <pre> * ?? * result?0??????? * ????????????? * </pre> * * @throws UnsupportedEncodingException URL???? */ public void testRequestParametersWithURLEncodedReservedCharacters() throws UnsupportedEncodingException { final String value = ":/?#[]@!$&'()*+,;="; StringBuilder builder = new StringBuilder(); builder.append(DCONNECT_MANAGER_URI); builder.append("/unique/test/ping"); builder.append("?key1=" + URLEncoder.encode(value, "UTF-8")); builder.append("&key2=" + URLEncoder.encode(value, "UTF-8")); builder.append("&"); builder.append(DConnectProfileConstants.PARAM_DEVICE_ID + "=" + getDeviceId()); builder.append("&"); builder.append(AuthorizationProfileConstants.PARAM_ACCESS_TOKEN + "=" + getAccessToken()); builder.append("&key3=" + URLEncoder.encode(value, "UTF-8")); builder.append("&key4=" + URLEncoder.encode(value, "UTF-8")); try { HttpUriRequest request = new HttpGet(builder.toString()); JSONObject root = sendRequest(request); assertResultOK(root); assertEquals("GET /unique/test/ping", root.getString("path")); assertEquals(value, root.getString("key1")); assertEquals(value, root.getString("key2")); assertEquals(value, root.getString("key3")); assertEquals(value, root.getString("key4")); } catch (JSONException e) { fail("Exception in JSONObject." + e.getMessage()); } } /** * POST?????. * <pre> * ?HTTP * Method: GET * Path: /battery?deviceId&accessToken=xxxx * </pre> * <pre> * ?? * result?0??????? * ??????????????? * </pre> * * @throws UnsupportedEncodingException ?Body????? */ public void testPostRequestParametersBothBodyAndParameterPart() throws UnsupportedEncodingException { StringBuilder builder = new StringBuilder(); builder.append(DCONNECT_MANAGER_URI); builder.append("/unique/test/ping"); builder.append("?"); builder.append(DConnectProfileConstants.PARAM_DEVICE_ID + "=unknown"); builder.append("&"); builder.append(AuthorizationProfileConstants.PARAM_ACCESS_TOKEN + "=" + getAccessToken()); try { HttpPost request = new HttpPost(builder.toString()); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(DConnectProfileConstants.PARAM_DEVICE_ID, getDeviceId())); params.add(new BasicNameValuePair(AuthorizationProfileConstants.PARAM_ACCESS_TOKEN, getAccessToken())); request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); JSONObject root = sendRequest(request); assertResultOK(root); } catch (JSONException e) { fail("Exception in JSONObject." + e.getMessage()); } } /** * PUT?????. * <pre> * ?HTTP * Method: PUT * Path: /battery?deviceId&accessToken=xxxx * </pre> * <pre> * ?? * result?0??????? * ??????????????? * </pre> * * @throws UnsupportedEncodingException ?Body????? */ public void testPutRequestParametersBothBodyAndParameterPart() throws UnsupportedEncodingException { StringBuilder builder = new StringBuilder(); builder.append(DCONNECT_MANAGER_URI); builder.append("/unique/test/ping"); builder.append("?"); builder.append(DConnectProfileConstants.PARAM_DEVICE_ID + "=unknown"); builder.append("&"); builder.append(AuthorizationProfileConstants.PARAM_ACCESS_TOKEN + "=" + getAccessToken()); try { HttpPut request = new HttpPut(builder.toString()); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(DConnectProfileConstants.PARAM_DEVICE_ID, getDeviceId())); params.add(new BasicNameValuePair(AuthorizationProfileConstants.PARAM_ACCESS_TOKEN, getAccessToken())); request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); JSONObject root = sendRequest(request); assertResultOK(root); } catch (JSONException e) { fail("Exception in JSONObject." + e.getMessage()); } } }