如何使用java发送post请求

Python014

如何使用java发送post请求,第1张

/**

* 向指定 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.CertificateException

import 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.ArrayList

import 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.HashMap

import 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()

}

}