`

java程序发送HTTP请求

    博客分类:
  • Java
阅读更多

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

 

  • 大小: 6.2 KB
分享到:
评论

相关推荐

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    ### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 ...通过上述示例和解释,你应该能够理解和掌握如何使用Java HttpClient库来发送GET和POST请求,这对于开发Web应用程序或与API接口交互至关重要。

    java 发送https 请求 证书

    当你需要在Java程序中发送HTTPS请求时,可能会遇到证书相关的问题,特别是当服务器使用自签名证书或者非标准CA签发的证书时。本文将详细讲解如何在Java中处理这类问题,以及如何使用httpUtils工具进行HTTPS请求。 ...

    java发送http请求报文json

    ### Java 发送 HTTP 请求报文 JSON 的实现方法 在现代软件开发中,HTTP 请求与响应是客户端和服务端之间通信的基础。对于 Java 开发者来说,能够熟练掌握如何使用 Java 来构建 HTTP 请求并发送 JSON 数据是一项重要...

    java socket 发送http请求webservice.

    Java Socket 发送HTTP请求Web Service是一项基础且重要的网络编程技能,尤其在开发分布式系统或集成不同服务时。本文将深入探讨如何使用Java的Socket API来实现这个功能,并结合标签“源码”和“工具”,提供实用的...

    Https请求工具类,Java实现http请求,https请求

    Https请求工具类,Java实现http请求,https请求 本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用...

    使用java发送get和post请求实践

    Apache HttpClient 库是 Apache 软件基金会提供的一个开源库,用于在 Java 中发送 HTTP 请求。它提供了一个高效、灵活的方法来处理 HTTP 请求和响应。 使用 Apache HttpClient 库发送 GET 请求 在上面的代码中,...

    JAVA模拟网页发送请求

    这些需求可以通过模拟HTTP请求的方式实现。本篇文章将详细介绍如何使用Java语言来模拟发送网页请求,并特别关注POST请求及Cookie的处理。 #### 二、模拟发送GET请求 首先,我们来看看如何使用Java的`java.net.URL`...

    java-http请求jar包

    Java发送HTTP请求是进行网络通信的基本操作之一,广泛应用于数据获取、API调用等场景。在Java中,Apache HttpClient库是一个强大的工具,它允许开发者高效、灵活地处理HTTP请求。这个"java-http请求jar包"实际上就是...

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。通过在接口上声明注解的方式配置...

    Java实现发送Http请求.doc

    在Java中,我们可以使用`java.net.HttpURLConnection`类来发送HTTP请求。以下是对标题和描述中所述知识点的详细说明: 1. **`HttpURLConnection`类**: `HttpURLConnection`是Java的标准API,位于`java.net`包下,...

    Java发https请求证书问题

    ### Java 发送 HTTPS 请求时遇到证书问题解析 在进行网络通信的过程中,HTTPS 协议由于其安全性被广泛应用。本文将围绕“Java 发送 HTTPS 请求证书问题”这一主题展开讨论,通过对给定文件中的代码示例及操作步骤...

    javaHttp异步请求

    Java中的HTTP异步请求是一种高效的网络通信方式,它允许程序在发送HTTP请求后不等待响应,而是立即继续执行其他任务,当服务器响应时,通过回调函数处理结果。这种方式避免了同步请求时线程阻塞的问题,提高了应用的...

    Java Https工具类,Java Https Post请求

    总结来说,`HttpsUtils.java`是一个用于简化Java程序中HTTPS POST请求的工具类,它隐藏了复杂的SSL/TLS配置和HTTP连接管理,使得开发者可以更加专注于业务逻辑。在实际开发中,此类可以帮助提高代码的可读性和可维护...

    JAVA HTTP请求示例

    在Java编程中,HTTP请求是网络编程中的基本操作,用于与服务器进行通信,获取或发送数据。本示例将深入探讨如何使用Java实现HTTP请求,主要关注两个关键类:`HttpClient`和`Sms`。 首先,我们来看`HttpClient`。`...

    java模似HTTP请求通过飞信发送免费短信

    飞信是一个允许用户发送免费短信和进行即时通讯的应用,而`commons-httpclient-3.0.1.jar`是一个Apache Commons HttpClient库,它提供了对HTTP协议的强大支持,使得在Java程序中发送HTTP请求变得更加简单。...

    JAVA发送HttpClient请求及接收请求结果过程

    HttpClient可以轻松地发送HTTP请求并处理响应,适用于各种应用场景,如Web服务调用、数据抓取等。 #### 三、发送HTTP请求 本节将介绍如何使用HttpClient发送HTTP请求,并处理响应结果。 ##### 3.1 发送POST请求 ...

    模拟浏览器发送http请求的工具

    一般来说,这个过程包括下载安装文件、按照指示运行并设置工具,以及学习如何构建和发送HTTP请求。文档通常会涵盖基本功能的介绍,如创建新请求、配置请求参数、查看响应,以及更高级的特性,如保存和重放请求、使用...

    JAVA发送HTTP请求,返回HTTP响应内容,应用及实例代码

    在Java编程中,发送HTTP请求并接收响应是常见的任务,特别是在网络编程和API交互中。JDK(Java Development Kit)自带的`java.net`包提供了基础的HTTP支持,包括发送GET和POST请求。这里我们将详细讲解如何使用Java...

    java 短信发送程序

    Java程序可以通过实现SMPP协议与服务提供商的系统建立连接,发送和接收短信。 3. **认证和连接** 在开始发送短信之前,需要与短信网关建立连接并进行身份验证。这通常涉及到提供一个独特的System ID、Password以及...

    发送Post请求,内容格式为xml,并获取响应内容

    ` 创建了一个HttpClient实例,用于发送HTTP请求。 3. **创建POST请求方法**:`PostMethod myPost = new PostMethod(url);` 创建了一个PostMethod对象,代表了要执行的POST请求,并指定了请求的URL。 4. **设置请求...

Global site tag (gtag.js) - Google Analytics