天天看點

curl for java_curl-to-java

軟體簡介

php curl lib for java implement php curl類庫的java版實作 支援php curl類庫的以下方法

curl_init

curl_setopt

curl_exec

curl_getinfo

curl_errno

curl_error

其中設定curl_setopt時支援以下參數,含義與php中一緻

CURLOPT_CONNECTTIMEOUT

CURLOPT_TIMEOUT

CURLOPT_HTTP_VERSION

CURLOPT_RETURNTRANSFER

CURLOPT_POST

CURLOPT_URL

CURLOPT_POSTFIELDS

CURLOPT_SSL_VERIFYPEER

CURLOPT_SSLCERT

CURLOPT_HTTPHEADER

CURLOPT_FOLLOWLOCATION

CURLOPT_MAXREDIRS

CURLOPT_CUSTOMREQUEST

根據java特性拓展了curl_setopt的以下參數

JAVA_RET_STREAM //傳回java的stream對象

JAVA_POOLCONN_TIMEOUT //httpclient連接配接池擷取連接配接的逾時時間

JAVA_POOL_MAXTOTAL //httpclient連接配接池最大連接配接數

JAVA_POOL_MAXPERROUTE

JAVA_POOL_TIMETOLIVE //httpclient連接配接池中連接配接有效時間

demo示例

public Object curl(String url, Object postData, String method) {

CurlLib curl = CurlFactory.getInstance("default");

ch = curl.curl_init();

curl.curl_setopt(ch, CurlOption.CURLOPT_CONNECTTIMEOUT, 1000);//建立連接配接逾時時間s

curl.curl_setopt(ch, CurlOption.CURLOPT_TIMEOUT, 5000);//請求逾時時間s

curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYPEER, false);//不檢查https證書

curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYHOST, false);//不檢查https證書

String postDataStr = "key1=v1";

curl.curl_setopt(ch, CurlOption.CURLOPT_CUSTOMREQUEST, "POST");

curl.curl_setopt(ch, CurlOption.CURLOPT_POSTFIELDS, postDataStr);

curl.curl_setopt(ch, CurlOption.CURLOPT_URL, "https://xxxx.com/yyy");

Object html = curl.curl_exec(ch);

Object httpCode = curl.curl_getinfo(ch, CurlInfo.CURLINFO_HTTP_CODE);

if (httpCode != null && 200 == Integer.valueOf(httpCode.toString())) {

return null;

}

return html;

}