/** * 向指定 URL 发送POST方法的请求 * @param url 发送请求的 URL * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String jsh, String url, String param, String charset, Map<String, String> requestPropertyMap) throws MyFPException { PrintWriter out = null; BufferedReader in = null; String result = ""; try { logger.info("Start 结算号【".concat(jsh).concat("】").concat(", HttpClientUtil.sendPost(String urlStr, ICBCReqHead iCBCReqHead)开始支调用工行支付接口操作, 当前时间【".concat(DateUtil.dateToString(new Date(), DateUtil.FORMAT_DATETIME)).concat("】"))); URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置连接超时和读取超时 connection.setConnectTimeout(30 * 1000); connection.setReadTimeout(60 * 1000); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); for(Iterator<Map.Entry<String, String>> it = requestPropertyMap.entrySet().iterator(); it.hasNext();){ Map.Entry<String, String> entry = it.next(); connection.setRequestProperty(entry.getKey(), entry.getValue()); } // 发送POST请求必须设置如下两行 connection.setDoOutput(true); connection.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), charset)); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"GB2312")); String line; while ((line = in.readLine()) != null) { result += line; } logger.info("End 结算号【".concat(jsh).concat("】").concat(", HttpClientUtil.sendPost(String urlStr, ICBCReqHead iCBCReqHead)结束支调用工行支付接口操作, 当前时间【".concat(DateUtil.dateToString(new Date(), DateUtil.FORMAT_DATETIME)).concat("】"))); return result; } catch (MalformedURLException e) { logger.error("工行支付签名接口URL协议、格式或者路径异常!", e); throw new MyFPException("-1", "工行支付签名接口URL协议、格式或者路径异常!", e); } catch (UnsupportedEncodingException e) { logger.error("工行支付读写文本字符串转换异常!", e); throw new MyFPException("-1", "工行支付读写文本字符串转换异常!", e); } catch (IOException e) { logger.error("工行支付签名接口打开Http连接异常!", e); throw new MyFPException("-1", "工行支付签名接口打开Http连接异常!", e); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException e) { logger.error("Exception is happened!", e); } } }
相关推荐
本篇文章将深入探讨如何使用HTTPClient发送POST请求,以及相关的项目结构和实现细节。 首先,"post-demo"项目定义了我们需要调用的接口。通常,这会是一个Web服务,可能是一个RESTful API,提供特定的功能或数据。...
接下来,使用HTTPClient发送POST请求。首先,需要初始化HttpClient实例,设置连接参数,然后创建HttpPost对象,指定服务器URL。接着,将XML字符串转换为HttpEntity,作为请求体: ```java CloseableHttpClient ...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
调用Web Service时,我们可以通过HttpClient发送POST请求,携带SOAP消息体来完成调用。以下是一段简单的HttpClient调用Web Service的代码示例: ```java CloseableHttpClient httpClient = HttpClients.create...
它们解释了如何使用HTTPClient发送请求,如何构造RESTful接口,以及如何处理分布式环境下的特定问题。良好的注释可以使代码更易读,有助于团队协作和维护。 综上所述,HTTPClient和RESTful风格的文件上传下载在Java...
使用HttpClient发送Java对象到服务器 在软件开发中,经常需要将Java对象发送到服务器,以便于数据交换和处理。使用Apache HttpClient库可以轻松地实现这一功能。本文将详细介绍如何使用HttpClient发送Java对象到...
在服务端,比如使用 Servlet 处理这些请求,对于 JSON 数据,我们需要使用 JSON 解析库来解析接收到的流。如提到的,可以选择阿里巴巴的 Fastjson 或谷歌的 Gson。Fastjson 效率较高,适合一般情况;而 Gson 在解析...
HTTPClient库(如Apache HttpClient)提供了一套接口和工具,使得客户端可以方便地构造和发送HTTP请求,同时服务端也可以接收和响应这些请求。在配置文件中,你需要确保已经包含了正确的HttpClient版本以及其他必要...
以下是一个简单的示例,展示了如何使用HttpClient发送GET请求到服务端,并接收返回的结果: ```csharp using System; using System.Net.Http; using System.Threading.Tasks; public class Client { private ...
POST方法用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列(Request-Line)中请求URI所指定资源的附加新子项。POST被设计成用统一的方法实现下列功能: 对现有资源的注释 向电子公告...
在实际开发中,我们经常需要向外部服务发送请求,获取数据或执行某些操作,这时我们需要使用 HttpClient 来发送 HTTP 请求。HttpClient 是一个强大且灵活的工具,提供了丰富的功能,例如支持多种协议、连接池、超时...
可以使用`try-catch`语句捕获异常,并实现重试机制,如使用递归或循环尝试重新发送请求。 五、最佳实践 1. 使用异步请求:为了防止阻塞主线程,通常使用`AsyncTask`、`Handler`、`Thread`或现代库如`Retrofit`、`...
5. **执行请求**:使用HttpClient对象的execute方法发送请求。 ```java HttpResponse response = httpClient.execute(httpGet); Future<HttpResponse> futureResponse = httpClient.execute(httpPost, new ...
在本文中,我们将深入探讨HTTPClient 4.5.6版本及其依赖的jar包,以及如何利用它进行客户端请求服务端的开发。 首先,HTTPClient 4.5.6是一个成熟的HTTP客户端实现,它支持多种HTTP标准,包括HTTP/1.1和部分HTTP/2...
以下是如何使用`HttpClient`发送GET请求并获取HTML源代码的基本步骤: 1. **创建HttpClient实例**:首先,你需要创建一个`HttpClient`对象。这是一个轻量级的类,可以复用以减少网络资源的消耗。 ```csharp ...
- **预连接**(Pipelining):预发送请求到服务器,提高并发性能。 - **Keep-Alive**:保持持久连接,减少握手开销。 9. **异步编程**: - HttpClient 4.5引入了异步API,基于Future和Callback模型,可以并行...
例如,通过HttpClient可以创建一个HTTP GET请求来获取网页内容,或者使用POST方法发送JSON或XML数据到服务器。HttpCore则在幕后处理网络连接的细节,而HttpMime帮助处理复杂的请求体内容。 HttpClient的配置是可...
HttpClient发送GET请求的基本步骤包括创建HttpClient对象、构建HttpGet请求、执行请求并获取响应: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(...
- 接收请求:Servlet会监听特定端口,接收到HttpClient发送的请求后,通过`HttpServletRequest`对象获取请求信息。 - 处理请求:根据请求内容执行相应的业务逻辑,如数据库操作、计算等。 - 响应客户端:使用`...