Android Open Source - kakao-android-sdk-standalone Http Request Builder






From Project

Back to project page kakao-android-sdk-standalone.

License

The source code is released under:

Apache License

If you think the Android project kakao-android-sdk-standalone listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2014 Minyoung Jeong <kkungkkung@gmail.com>
 */* w  w w .j av  a  2 s  .  co  m*/
 * Redistribution and modification in source or binary forms are not permitted without specific prior written permission.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.kakao.http;

import android.net.Uri;

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;

import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author kkung
 */
public abstract class HttpRequestBuilder {

    public static HttpRequestBuilder get(final String url) {
        return new HttpGetRequestBuilder(url);
    }

    public static HttpRequestBuilder post(final String url) {
        return new HttpPostRequestBuilder(url);
    }


    protected final String url;
    protected List<NameValuePair> parameters;
    protected Map<String, String> headers;
    protected String charset;

    protected HttpRequestBuilder(final String url) {
        if (url == null || url.length() == 0) {
            throw new IllegalArgumentException("url == null or empty");
        }
        this.url = url;
        this.parameters = new ArrayList<NameValuePair>();
        this.headers = new HashMap<String, String>();
        this.charset = Charset.forName("UTF-8").name();
    }

    public HttpRequestBuilder addQueryParameter(final String key, final String value) {
        this.parameters.add(new BasicNameValuePair(key, value));
        return this;
    }

    public HttpRequestBuilder addHeader(final String key, final String value) {
        this.headers.put(key, value);
        return this;
    }

    public abstract Request build();

    public HttpRequestBuilder setBodyEncoding(String bodyEncoding) {
        this.charset = bodyEncoding;
        return this;
    }

    public abstract void addBodyPart(BodyPart part);


    private static class HttpGetRequestBuilder extends HttpRequestBuilder {

        protected HttpGetRequestBuilder(String url) {
            super(url);
        }

        @Override
        public Request build() {
            final Uri.Builder builder = new Uri.Builder();
            final Uri uri = Uri.parse(url);

            builder.scheme(uri.getScheme()).path(uri.getPath()).authority(uri.getAuthority());
            for (NameValuePair pair : parameters) {
                builder.appendQueryParameter(pair.getName(), pair.getValue());
            }

            final String buildUrl = builder.build().toString();

            return new Request() {
                @Override
                public String getUrl() {
                    return buildUrl;
                }

                @Override
                public Map<String, String> getHeaders() {
                    return headers;
                }

                @Override
                public String getMethod() {
                    return "GET";
                }

                @Override
                public boolean hasPayload() {
                    return false;
                }

                @Override
                public String getCharSet() {
                    return charset;
                }

                @Override
                public Object getPayload() {
                    return null;
                }
            };
        }

        @Override
        public void addBodyPart(BodyPart part) {
            throw new UnsupportedOperationException();
        }
    }

    private static class HttpPostRequestBuilder extends HttpRequestBuilder {

        protected Multipart multipart;

        protected HttpPostRequestBuilder(String url) {
            super(url);
            multipart = null;
        }

        @Override
        public Request build() {
            final Object[] payload = new Object[]{null};

            if (multipart != null) {
                payload[0] = multipart;
            } else {
                if (parameters != null && parameters.size() > 0) {
                    UrlEncodedFormEntity entity = null;
                    try {
                        entity = new UrlEncodedFormEntity(parameters, charset);
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    payload[0] = entity;
                }
            }

            return new Request() {
                @Override
                public String getUrl() {
                    return url;
                }

                @Override
                public Map<String, String> getHeaders() {
                    return headers;
                }

                @Override
                public String getMethod() {
                    return "POST";
                }

                @Override
                public boolean hasPayload() {
                    return payload[0] != null;
                }

                @Override
                public String getCharSet() {
                    return charset;
                }

                @Override
                public Object getPayload() {
                    return payload[0];
                }
            };
        }

        @Override
        public void addBodyPart(BodyPart part) {
            if (multipart == null) {
                multipart = new Multipart(charset);
            }

            multipart.addBodyPart(part);
        }
    }
}




Java Source Code List

com.kakao.APIErrorResult.java
com.kakao.AppActionBuilder.java
com.kakao.ErrorCode.java
com.kakao.KakaoLinkParseException.java
com.kakao.KakaoLink.java
com.kakao.KakaoStoryHttpResponseHandler.java
com.kakao.KakaoStoryPostParamBuilder.java
com.kakao.KakaoStoryProfile.java
com.kakao.KakaoStoryService.java
com.kakao.KakaoStoryUpload.java
com.kakao.KakaoTalkHttpResponseHandler.java
com.kakao.KakaoTalkLinkMessageBuilder.java
com.kakao.KakaoTalkProfile.java
com.kakao.KakaoTalkService.java
com.kakao.LoginActivity.java
com.kakao.LogoutResponseCallback.java
com.kakao.MeResponseCallback.java
com.kakao.SessionCallback.java
com.kakao.Session.java
com.kakao.SignupResponseCallback.java
com.kakao.UnlinkResponseCallback.java
com.kakao.UpdateProfileResponseCallback.java
com.kakao.UserManagement.java
com.kakao.UserProfileResponseCallback.java
com.kakao.UserProfile.java
com.kakao.UserResponseCallback.java
com.kakao.User.java
com.kakao.authorization.AuthorizationResult.java
com.kakao.authorization.Authorizer.java
com.kakao.authorization.accesstoken.AccessTokenRequest.java
com.kakao.authorization.accesstoken.AccessToken.java
com.kakao.authorization.accesstoken.GetterAccessToken.java
com.kakao.authorization.accesstoken.package-info.java
com.kakao.authorization.authcode.AuthorizationCodeHandler.java
com.kakao.authorization.authcode.AuthorizationCodeRequest.java
com.kakao.authorization.authcode.AuthorizationCode.java
com.kakao.authorization.authcode.GetterAuthorizationCode.java
com.kakao.authorization.authcode.KakaoWebViewDialog.java
com.kakao.authorization.authcode.LoggedInTalkAuthHandler.java
com.kakao.authorization.authcode.LoggedOutTalkAuthHandler.java
com.kakao.authorization.authcode.OnWebViewCompleteListener.java
com.kakao.authorization.authcode.WebViewAuthHandler.java
com.kakao.authorization.authcode.package-info.java
com.kakao.exception.KakaoException.java
com.kakao.exception.KakaoWebviewException.java
com.kakao.exception.package-info.java
com.kakao.helper.Base64.java
com.kakao.helper.JsonHelper.java
com.kakao.helper.Logger.java
com.kakao.helper.ServerProtocol.java
com.kakao.helper.SharedPreferencesCache.java
com.kakao.helper.SystemInfo.java
com.kakao.helper.TalkProtocol.java
com.kakao.helper.Utility.java
com.kakao.helper.package-info.java
com.kakao.http.AsyncHttpClient.java
com.kakao.http.BodyPart.java
com.kakao.http.FilePart.java
com.kakao.http.HttpRequestBuilder.java
com.kakao.http.HttpRequestTask.java
com.kakao.http.HttpResponseHandler.java
com.kakao.http.HttpTaskManager.java
com.kakao.http.KakaoAsyncHandler.java
com.kakao.http.Multipart.java
com.kakao.http.Request.java
com.kakao.http.Response.java
com.kakao.http.package-info.java
com.kakao.internal.ActionInfo.java
com.kakao.internal.Action.java
com.kakao.internal.KakaoTalkLinkProtocol.java
com.kakao.internal.LinkObject.java
com.kakao.internal.package-info.java
com.kakao.rest.APIHttpRequestTask.java
com.kakao.rest.package-info.java
com.kakao.sample.kakaolink.KakaoLinkMainActivity.java
com.kakao.sample.kakaolink.KakaoLinkSplashActivity.java
com.kakao.sample.kakaolink.package-info.java
com.kakao.sample.kakaostory.KakaoStoryLoginActivity.java
com.kakao.sample.kakaostory.KakaoStoryMainActivity.java
com.kakao.sample.kakaostory.KakaoStorySignupActivity.java
com.kakao.sample.kakaostory.package-info.java
com.kakao.sample.kakaotalk.KakaoTalkLoginActivity.java
com.kakao.sample.kakaotalk.KakaoTalkMainActivity.java
com.kakao.sample.kakaotalk.KakaoTalkSignupActivity.java
com.kakao.sample.kakaotalk.package-info.java
com.kakao.sample.usermgmt.ExtraUserPropertyLayout.java
com.kakao.sample.usermgmt.UserMgmtLoginActivity.java
com.kakao.sample.usermgmt.UsermgmtMainActivity.java
com.kakao.sample.usermgmt.UsermgmtSignupActivity.java
com.kakao.sample.usermgmt.package-info.java
com.kakao.template.loginbase.SampleLoginActivity.java
com.kakao.template.loginbase.SampleSignupActivity.java
com.kakao.template.loginbase.package-info.java
com.kakao.template.loginfree.LoginFreeTemplateActivity.java
com.kakao.template.loginfree.package-info.java
com.kakao.widget.LoginButton.java
com.kakao.widget.ProfileLayout.java
com.kakao.widget.package-info.java
com.kakao.package-info.java