* 向指定 URL 发送POST方法的请求
*
* @param url
*发送请求的 URL
* @param param
*请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null
BufferedReader in = null
String result = ""
try {
URL realUrl = new URL(url)
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection()
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*")
conn.setRequestProperty("connection", "Keep-Alive")
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatibleMSIE 6.0Windows NT 5.1SV1)")
// 发送POST请求必须设置如下两行
conn.setDoOutput(true)
conn.setDoInput(true)
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream())
// 发送请求参数
out.print(param)
// flush输出流的缓冲
out.flush()
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()))
String line
while ((line = in.readLine()) != null) {
result += line
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e)
e.printStackTrace()
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close()
}
if(in!=null){
in.close()
}
}
catch(IOException ex){
ex.printStackTrace()
}
}
return result
}
使用httpClient可以发送,具体的可以参考下面的代码
SSLClient类,继承至HttpClient
import java.security.cert.CertificateExceptionimport java.security.cert.X509Certificate
import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager
import org.apache.http.conn.ClientConnectionManager
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.impl.client.DefaultHttpClient
//用于进行Https请求的HttpClient
public class SSLClient extends DefaultHttpClient{
public SSLClient() throws Exception{
super()
SSLContext ctx = SSLContext.getInstance("TLS")
X509TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null
}
}
ctx.init(null, new TrustManager[]{tm}, null)
SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
ClientConnectionManager ccm = this.getConnectionManager()
SchemeRegistry sr = ccm.getSchemeRegistry()
sr.register(new Scheme("https", 443, ssf))
}
}
HttpClient发送post请求的类
import java.util.ArrayListimport java.util.Iterator
import java.util.List
import java.util.Map
import java.util.Map.Entry
import org.apache.http.HttpEntity
import org.apache.http.HttpResponse
import org.apache.http.NameValuePair
import org.apache.http.client.HttpClient
import org.apache.http.client.entity.UrlEncodedFormEntity
import org.apache.http.client.methods.HttpPost
import org.apache.http.message.BasicNameValuePair
import org.apache.http.util.EntityUtils
/*
* 利用HttpClient进行post请求的工具类
*/
public class HttpClientUtil {
public String doPost(String url,Map<String,String> map,String charset){
HttpClient httpClient = null
HttpPost httpPost = null
String result = null
try{
httpClient = new SSLClient()
httpPost = new HttpPost(url)
//设置参数
List<NameValuePair> list = new ArrayList<NameValuePair>()
Iterator iterator = map.entrySet().iterator()
while(iterator.hasNext()){
Entry<String,String> elem = (Entry<String, String>) iterator.next()
list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()))
}
if(list.size() > 0){
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset)
httpPost.setEntity(entity)
}
HttpResponse response = httpClient.execute(httpPost)
if(response != null){
HttpEntity resEntity = response.getEntity()
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset)
}
}
}catch(Exception ex){
ex.printStackTrace()
}
return result
}
}
测试代码
import java.util.HashMapimport java.util.Map
//对接口进行测试
public class TestMain {
private String url = "https://192.168.1.101/"
private String charset = "utf-8"
private HttpClientUtil httpClientUtil = null
public TestMain(){
httpClientUtil = new HttpClientUtil()
}
public void test(){
String httpOrgCreateTest = url + "httpOrg/create"
Map<String,String> createMap = new HashMap<String,String>()
createMap.put("authuser","*****")
createMap.put("authpass","*****")
createMap.put("orgkey","****")
createMap.put("orgname","****")
String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset)
System.out.println("result:"+httpOrgCreateTestRtn)
}
public static void main(String[] args){
TestMain main = new TestMain()
main.test()
}
}