Java 程序如何发送HTTP请求呢?
有两种实现方式:
1,HttpURLConnection
2,HttpClient
依赖jar包:
- 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("返回结果为空.");
- return;
- }
- String resultJson = new String(resultJsonBytes,
- SystemHWUtil.CHARSET_GBK);
- String resultJson2 = new String(resultJsonBytes,
- SystemHWUtil.CHARSET_UTF);
-
-
- Map<String, Object> resultMap = null;
-
- resultMap = JsonUtils.getMap(resultJson2);
-
-
- if (!ValueWidget.isNullOrEmpty(resultMap)
- && resultMap.containsKey(token_label)) {
- addInputBox(token_label, (String)resultMap.get(token_label));
- }else{
-
- }
-
-
-
-
- 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 的实现如下:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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);
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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, String sizeHeadKey) throws Exception {
-
- 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);
- }
- }
- if (isDetail)
- 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);
-
-
-
-
-
- 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;
-
-
-
-
-
- return retArr;
- }
源码见:com.http.util.HttpSocketUtil
下载地址:http://pan.baidu.com/s/1hqeXBhE