thl1229的gravatar头像
thl1229 2015-08-24 11:26:50

java如何通过http post请求传递json参数到restful webservice服务接口获取数据?

java后台要使用http restful调用webservice接口获取数据,代码要怎么写啊?

所有回答列表(2)
a3870764722a的gravatar头像
a3870764722a  LV22 2015年8月24日

package commons;

import commons.weibo4j.util.URLEncodeUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
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.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.*;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 * 网络请求工具
 *
 * @author Haner
 */
public class HttpUtil {
    private static HttpClient httpClient = null;
    private static HttpGet httpGet;
    private static HttpPost httpPost;
    public static String TIME_OUT = "请求超时";
    public static String SERVER_ERROR = "服务器异常";
    public static String NETWORK_ERROR = "网络异常";

    static {
            httpClient = getHttpClient();
    }

    /**
     * Http Get请求 请求地址
     *
     * @param url    Get参数
     * @param params 编码
     * @param encode 返回请求结果
     * @return
     * @throws org.apache.http.client.ClientProtocolException
     * @throws java.io.IOException
     */
    public static String sendGetRequest(String url, Map<String, String> params,
                                        String encode) {
        String result = null;
        try {
            if (null == params) {
                httpGet = new HttpGet(url);
            } else {
                httpGet = new HttpGet(url + dealGetParams(params, encode));
            }
            HttpResponse response = httpClient.execute(httpGet);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                result = EntityUtils.toString(response.getEntity());
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result != null ? result : "";
    }

    public static String sendGetRequest(String url, Map<String, String> params)
            throws ClientProtocolException, IOException {
        return sendGetRequest(url, params, "UTF-8");
    }

    public static String sendGetRequest(String url)
            throws ClientProtocolException, IOException {
        return sendGetRequest(url, null, "UTF-8");
    }

    public static String sendGetRequestGB2312(String url)
            throws ClientProtocolException, IOException {
        return sendGetRequest(url, null, "GB2312");
    }

    /**
     * POST请求 返回请求结果 HashMap键值参数
     *
     * @param params
     * @return
     * @throws Exception
     */
    @SuppressWarnings({"deprecation", "unchecked"})
    public static String sendPostRequest(String url, Object params, String encode) throws Exception {
        String resultStr = null;
        httpPost = new HttpPost(url);
        if (params != null) {
            StringEntity entity;
            if (params instanceof Map) {
                entity = new StringEntity(dealPostParams(
                        (HashMap<String, String>) params, encode));
            } else if (params instanceof String) {
                entity = new StringEntity((String) params, encode);
            } else if (params instanceof List) {
                entity = new UrlEncodedFormEntity(
                        (List<? extends NameValuePair>) params, encode);
            } else {
                throw new Exception("参数有误!");
            }
//            httpPost.setHeader("Authorization","Bearer access_token");
            httpPost.setEntity(entity);
        }
        try {
            HttpResponse response = httpClient.execute(httpPost);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                resultStr = EntityUtils.toString(response.getEntity());
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultStr != null ? resultStr : null;
    }

    public static String sendPostRequest(String url) throws Exception {
        return sendPostRequest(url,"");
    }

    /**
     * 键值对请求 默认UTF-8编码
     *
     * @param url
     * @param params
     * @return
     * @throws Exception
     */
    public static String sendPostRequest(String url, Map<String, String> params)
            throws Exception {
        return sendPostRequest(url, params, "UTF-8");
    }

    /**
     * String 默认UTF-8编码
     *
     * @param url
     * @param params
     * @return
     * @throws Exception
     */
    public static String sendPostRequest(String url, String params)
            throws Exception {
        return sendPostRequest(url, params==null?null:params, "UTF-8");
    }

    /**
     * 键值对请求 默认UTF-8编码
     *
     * @param url
     * @param params
     * @return
     * @throws Exception
     */
    public static String sendPostRequest(String url, List<NameValuePair> params)
            throws Exception {
        return sendPostRequest(url, params, "UTF-8");
    }

    /**
     * 处理Get方式请求的URL
     *
     * @param params
     * @param enc
     * @return
     * @throws java.io.UnsupportedEncodingException
     */
    private static String dealGetParams(Map<String, String> params, String enc)
            throws UnsupportedEncodingException {
        StringBuffer sb = new StringBuffer();
        sb.append("?");
        for (Entry<String, String> entry : params.entrySet()) {
            // 参数名=参数&参数名=参数
            sb.append(entry.getKey()).append("=")
                    .append(URLEncoder.encode(entry.getValue(), enc))
                    .append("&");
        }
        // 删除最后一个&
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    /**
     * 处理POST请求URL
     *
     * @param params
     * @param enc
     * @return
     */
    private static String dealPostParams(Map<String, String> params, String enc) {
        StringBuffer sb = new StringBuffer();
        for (Entry<String, String> entry : params.entrySet()) {
            try {
                sb.append(entry.getKey()).append("=")
                        .append(URLEncoder.encode(entry.getValue(), enc))
                        .append("&");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    /**
     * 获取HttpClient
     *
     * @return
     */
    @SuppressWarnings("deprecation")
    public static synchronized HttpClient getHttpClient() {
        if (null == httpClient) {
            httpClient = new DefaultHttpClient();
        }
        return httpClient;
    }

}

评论(1) 最佳答案
sunbojie的gravatar头像
sunbojie  LV2 2015年8月27日

$.post(url, { json: postdata }, function (json) {
if (json) {
jBox.tip("添加成功!", "提示");
location.reload();
}
else {
jBox.tip("添加失败!", "提示");
location.reload();
}
}, "json")

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友