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); // 把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); } /*** * * @param urlStr * @param sendData * @param contentType * : default is application/x-www-form-urlencoded * @param cookie * @param headers * : request header * @param isWrite2file * : whether write to file * @param destFile * file which will be written * @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, 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); } } 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); // 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
相关推荐
### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 ...通过上述示例和解释,你应该能够理解和掌握如何使用Java HttpClient库来发送GET和POST请求,这对于开发Web应用程序或与API接口交互至关重要。
当你需要在Java程序中发送HTTPS请求时,可能会遇到证书相关的问题,特别是当服务器使用自签名证书或者非标准CA签发的证书时。本文将详细讲解如何在Java中处理这类问题,以及如何使用httpUtils工具进行HTTPS请求。 ...
Java Socket 发送HTTP请求Web Service是一项基础且重要的网络编程技能,尤其在开发分布式系统或集成不同服务时。本文将深入探讨如何使用Java的Socket API来实现这个功能,并结合标签“源码”和“工具”,提供实用的...
### Java 发送 HTTP 请求报文 JSON 的实现方法 在现代软件开发中,HTTP 请求与响应是客户端和服务端之间通信的基础。对于 Java 开发者来说,能够熟练掌握如何使用 Java 来构建 HTTP 请求并发送 JSON 数据是一项重要...
Apache HttpClient 库是 Apache 软件基金会提供的一个开源库,用于在 Java 中发送 HTTP 请求。它提供了一个高效、灵活的方法来处理 HTTP 请求和响应。 使用 Apache HttpClient 库发送 GET 请求 在上面的代码中,...
Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用...
这些需求可以通过模拟HTTP请求的方式实现。本篇文章将详细介绍如何使用Java语言来模拟发送网页请求,并特别关注POST请求及Cookie的处理。 #### 二、模拟发送GET请求 首先,我们来看看如何使用Java的`java.net.URL`...
Java发送HTTP请求是进行网络通信的基本操作之一,广泛应用于数据获取、API调用等场景。在Java中,Apache HttpClient库是一个强大的工具,它允许开发者高效、灵活地处理HTTP请求。这个"java-http请求jar包"实际上就是...
声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。通过在接口上声明注解的方式配置...
在Java中,我们可以使用`java.net.HttpURLConnection`类来发送HTTP请求。以下是对标题和描述中所述知识点的详细说明: 1. **`HttpURLConnection`类**: `HttpURLConnection`是Java的标准API,位于`java.net`包下,...
### Java 发送 HTTPS 请求时遇到证书问题解析 在进行网络通信的过程中,HTTPS 协议由于其安全性被广泛应用。本文将围绕“Java 发送 HTTPS 请求证书问题”这一主题展开讨论,通过对给定文件中的代码示例及操作步骤...
Java中的HTTP异步请求是一种高效的网络通信方式,它允许程序在发送HTTP请求后不等待响应,而是立即继续执行其他任务,当服务器响应时,通过回调函数处理结果。这种方式避免了同步请求时线程阻塞的问题,提高了应用的...
总结来说,`HttpsUtils.java`是一个用于简化Java程序中HTTPS POST请求的工具类,它隐藏了复杂的SSL/TLS配置和HTTP连接管理,使得开发者可以更加专注于业务逻辑。在实际开发中,此类可以帮助提高代码的可读性和可维护...
在Java编程中,HTTP请求是网络编程中的基本操作,用于与服务器进行通信,获取或发送数据。本示例将深入探讨如何使用Java实现HTTP请求,主要关注两个关键类:`HttpClient`和`Sms`。 首先,我们来看`HttpClient`。`...
飞信是一个允许用户发送免费短信和进行即时通讯的应用,而`commons-httpclient-3.0.1.jar`是一个Apache Commons HttpClient库,它提供了对HTTP协议的强大支持,使得在Java程序中发送HTTP请求变得更加简单。...
HttpClient可以轻松地发送HTTP请求并处理响应,适用于各种应用场景,如Web服务调用、数据抓取等。 #### 三、发送HTTP请求 本节将介绍如何使用HttpClient发送HTTP请求,并处理响应结果。 ##### 3.1 发送POST请求 ...
一般来说,这个过程包括下载安装文件、按照指示运行并设置工具,以及学习如何构建和发送HTTP请求。文档通常会涵盖基本功能的介绍,如创建新请求、配置请求参数、查看响应,以及更高级的特性,如保存和重放请求、使用...
在Java编程中,发送HTTP请求并接收响应是常见的任务,特别是在网络编程和API交互中。JDK(Java Development Kit)自带的`java.net`包提供了基础的HTTP支持,包括发送GET和POST请求。这里我们将详细讲解如何使用Java...
Java程序可以通过实现SMPP协议与服务提供商的系统建立连接,发送和接收短信。 3. **认证和连接** 在开始发送短信之前,需要与短信网关建立连接并进行身份验证。这通常涉及到提供一个独特的System ID、Password以及...
` 创建了一个HttpClient实例,用于发送HTTP请求。 3. **创建POST请求方法**:`PostMethod myPost = new PostMethod(url);` 创建了一个PostMethod对象,代表了要执行的POST请求,并指定了请求的URL。 4. **设置请求...