您的位置:首页 > 理论基础 > 计算机网络

JAVA利用HttpClient进行POST请求(HTTPS)

2017-04-20 00:00 351 查看
JAVA利用HttpClient进行POST请求(HTTPS)

下面代码在 jeecg框架里面测试通过了,需要导入的包,请自行补充

package net.leeyi.util;

import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.log4j.Logger;

import java.util.Arrays;
import java.net.URL;
import java.io.IOException;

public class JhttpClient {
private static final Logger logger = Logger.getLogger(JhttpClient.class);

public static JSONObject get(String url, String path, NameValuePair[] params) {
return request(url, path, params, "get");
}

public static JSONObject post(String url, String path, NameValuePair[] params) {
return request(url, path, params, "post");
}

private static JSONObject request(String url, String path,  NameValuePair[] params, String type) {

JSONObject jsonObject = new JSONObject();
try {
URL urlObj = new URL(url);

String protocol = urlObj.getProtocol();
String host = urlObj.getHost();
Integer port = urlObj.getPort();
String urlpath = urlObj.getPath().replaceAll("//", "");

if (protocol.equals("https") && port.equals(-1)) {
port = 443;
} else if (protocol.equals("http") && port.equals(-1)) {
port = 80;
}

// 处理path
Integer urlpath_len = urlpath.length();
if (urlpath_len>0 && urlpath.substring(urlpath_len-1, urlpath_len).equals("/")) {
urlpath = urlpath.substring(0, urlpath_len-1);
}
if (urlpath_len>1) {
path = urlpath + path;
}

// System.out.println(protocol);
// System.out.println(host);
// System.out.println(port);
// System.out.println(path);
try {
HttpClient httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(host, port, protocol);
HttpMethod method;
String response;

switch (type.toLowerCase()) {
case "get":
method = getMethod(path, params);
httpClient.executeMethod(method);
response = method.getResponseBodyAsString();
jsonObject = JSONObject.fromObject(response);
break;
case "post":
method = postMethod(path, params);
httpClient.executeMethod(method);
response = method.getResponseBodyAsString();
//System.out.println(response);
logger.info("This is post debug message.");
logger.info(response);
jsonObject = JSONObject.fromObject(response);
break;
default:
jsonObject.put("status", 500);
jsonObject.put("message", "非法URL");
break;
}

return jsonObject;
} catch (IOException e) {
e.printStackTrace();
}

} catch (Exception e) {
System.out.println("Exception");
System.out.println(e);
jsonObject.put("message", e);
}
jsonObject.put("status", 500);
return jsonObject;
}

private static HttpMethod getMethod(String url, NameValuePair[] params) throws IOException{
String param_str = "";
for(NameValuePair kv: params) {
param_str += kv.getName()+"="+kv.getValue()+"&";
}
GetMethod get = new GetMethod(url+"?"+param_str);
get.releaseConnection();
return get;
}

private static HttpMethod postMethod(String url,NameValuePair[] params) throws IOException{
PostMethod post = new PostMethod(url);
post.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
post.setRequestBody(params);
post.releaseConnection();
return post;
}

public static void main(String[] args,NameValuePair[] param) {
NameValuePair[] param
JSONObject response =  post("https://api.leeyi.net","/malls/user_balance");
System.out.println(response.get("data"));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java HttpClient