有两种实现方式:
1,httpurlconnection
2,httpclient
依赖jar包:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauEmNxMTY0ITNzEmY40SNyEjYtUWNjNTLhZGZ40yY4gjMmlzYi9CX5MTM48CX5ATMw8CX05WZth2YhRHdh9CXkF2bsBXdvwVbvNmLllXZ0lmLywGZvw1LcpDc0RHaiojIsJye.jpg)
object[] resultarr = httpsocketutil.httprequest(url, ssl22,
forcepost22, json_request, contenttype,
session, headermap, false, null, newencoding,
15000, 25000);
if(valuewidget.isnullorempty(resultarr)){
guiutil23.errordialog("404");
return;
}
byte[] resultjsonbytes = (byte[])resultarr[0];
if (valuewidget.isnullorempty(resultjsonbytes)) {
resultta.settext("请检查请求的url 是否正确(" + url + ")");
guiutil23.warningdialog("返回结果为空.");
string resultjson = new string(resultjsonbytes,
systemhwutil.charset_gbk);
string resultjson2 = new string(resultjsonbytes,
systemhwutil.charset_utf);
// 把http请求结果(json字符串)转化为map
map<string, object> resultmap = null;
// if(!"{}".equals(resultjson2.replaceall(" ", ""))){//"{}"
resultmap = jsonutils.getmap(resultjson2);// }
// system.out.println(resultmap);
// 判断该接口是否是启动接口,因为启动接口会返回token
if (!valuewidget.isnullorempty(resultmap)
&& resultmap.containskey(token_label)) {
addinputbox(token_label, (string)resultmap.get(token_label));
}else{//server not offer token
// string sessionid = casedetail.getsessionid();
// if (!valuewidget.isnullorempty(sessionid)) {
// addinputbox( sessionid_label, sessionid);
// }
if (!valuewidget.isnullorempty(resultarr[1])) {
session = (string)resultarr[1];
if (!valuewidget.isnullorempty(session)) {
sessiontf.settext(session);
httprequest的返回值是一个数组:
返回数组有4个元素,分别是:
1,request result(byte[]):应答体
2,sessionid
3,contenttype:应答的content type;
4,response code:http 状态码
httprequest 的实现如下:
/***
*
* @param urlstr
* @param ssl
* @param forcepost
* @param senddata
* @param contenttype
* @param cookie
* @param headers
* @param iswrite2file
* @param destfile
* @param charset
* @param connecttimeout
* @param readtimeout
* @return : request result(byte[]) ;sessionid;contenttype;response code
* @throws exception
*/
public static object[] httprequest(string urlstr, boolean ssl,
boolean forcepost, string senddata, string contenttype,
string cookie, map<string, string> headers, boolean iswrite2file,
object destfile, string charset, int connecttimeout, int readtimeout)
throws exception {
return httprequest(urlstr, ssl, forcepost, senddata, contenttype,
cookie, headers, iswrite2file, destfile, charset,
connecttimeout, readtimeout, null);
}
* : default is application/x-www-form-urlencoded
* : request header
* : whether write to file
* file which will be written
object destfile, string charset, int connecttimeout,
int readtimeout, string sizeheadkey) throws exception {
// url url = new url(urlstring);
if (isdetail)
system.out.println("ssl:" + ssl);
httpurlconnection huc = beforeconnect(urlstr, ssl, forcepost, senddata,
contenttype, cookie, headers, charset, connecttimeout,
readtimeout);
file writefile = null;
if (destfile instanceof file) {
writefile = (file) destfile;
} else {
if (!valuewidget.isnullorempty(destfile)) {
writefile = new file((string) destfile);
}
}
system.out.println("writefile:" + writefile);
//应答码,返回码
int rescode = huc.getresponsecode();
byte[] result = connection(rescode,huc, iswrite2file, writefile, sizeheadkey);
if (!iswrite2file && (result == null)) {
system.out
.println("[httpsocketutil.httprequest]connection return is null.");
return null;
if (!valuewidget.isnullorempty(result)) {
system.out.println("read result length of bytes:" + result.length);
object[] retarr = new object[3];
string session_value = huc
.getheaderfield(systemhwutil.key_header_coolie);
// map<string, list<string>> responseheaders = huc.getheaderfields();
// for (iterator<?> it = responseheaders.keyset().iterator();
// it.hasnext();) {
// system.out.println("key:" + it.next());
// }
if (valuewidget.ishasvalue(session_value)) {
string[] sessionid = session_value.split(";");
retarr[1] = sessionid[0];
if (isdetail) {
system.out
.println("[httpsocketutil.httprequest]session id is :"
+ sessionid[0]);
retarr[2] = huc.getcontenttype();
retarr[3] = rescode;
retarr[0] = result;
// if (iswrite2file && destfile != null) {
// byte[] bytes = (byte[]) result;
//
// fileutils.writebytestofile(bytes, writefile);
return retarr;
源码见:com.http.util.httpsocketutil
下载地址:http://pan.baidu.com/s/1hqexbhe