`
hdu0704
  • 浏览: 12794 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何用JAVA收发HTTP请求

    博客分类:
  • java
 
阅读更多

        首先需要明确的一点是,不管是磁盘还是网络传输,最小的存储单元都是字节,所以 I/O 操作的都是字节而不是字符       

        当我们需要用java发送http请求的时候,通常会用apache的commons-httpclient包。只要新建一个HttpClient,设置编码,设定超时时间,传入url执行GetMethod或者PostMethod方式进行发送就能返回一个byte数组。然后根据需要,将返回的字节流转换成字符串或者文件。

        这个本质上跟从浏览器发起请求是一样的,服务端的处理没有差异。一般服务端在返回的时候会调用HttpServletResponse对象的setContentType方法进行设置,用于说明返回字节流的类型,这样浏览器接收到返回信息就能知道这个时候是该给用户展示一个字符串还是一张网页还是提示用户下载保存文件。

       以下是java客户端收发http请求的代码:

package test.IO;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class TestHttpIO {
	private static String url = "*********";
	private static String filePath = "*********";
	private static final String CONTENT_CHARSET = "UTF-8";

	public void writeFileFromUrl() {
		byte[] responce = getUrl(url);
		// 如果网络返回的是字符串
		String str = new String(responce);// 注意,一般情况下这边需要指定编码格式,不指定的话会使用系统默认的编码格式
		BufferedWriter bw;
		try {
			bw = new BufferedWriter(new FileWriter(filePath));
			bw.write(str);
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// 如果网络返回是文件
		OutputStream os;
		try {
			os = new FileOutputStream(new File(filePath));
			os.write(responce);
			os.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static byte[] getUrl(String url) {
		HttpClient client = new HttpClient();
		client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,
				CONTENT_CHARSET);
		client.setTimeout(10000);
		GetMethod method = new GetMethod(url);
		try {
			int statusCode = client.executeMethod(method);
			if (statusCode != HttpStatus.SC_OK) {
				throw new RuntimeException("服务器响应错误[" + statusCode + "]");
			}
			byte[] responseBody = null;
			responseBody = method.getResponseBody();
			return responseBody;
		} catch (HttpException e) {
			throw new RuntimeException(e);
		} catch (IOException e) {
			throw new RuntimeException(e);
		} finally {
			method.releaseConnection();
			client.getHttpConnectionManager().closeIdleConnections(0);
		}
	}
}

 

分享到:
评论

相关推荐

    java收发短信程序

    例如,可以使用HTTP API发送POST请求来发送短信,接收到服务器响应后,确认短信是否发送成功。 在Java程序中,短信发送通常分为以下几个步骤: 1. **配置短信网关**:获取短信服务商提供的API接口文档,包括URL、...

    详解Java发送HTTP请求

    Java 发送 HTTP 请求详解 Java 是一种流行的编程语言,广泛应用于移动应用程序、Web 应用程序和企业软件开发等领域。...通过本文,读者可以学习到如何使用 Java 发送 HTTP 请求,并在实际项目中应用。

    Java短信收发系统开源

    1. **短信发送**:通过与短信网关建立连接,使用HTTP或SMTP协议发送短信。这通常涉及到短信API的调用,需要处理短信编码、签名设置、模板消息等问题。 2. **短信接收**:监听短信网关的反馈,接收发送状态报告或者...

    java编写的短信收发程序已用于实际的项目

    通常,开发者需要根据服务商提供的API文档,使用Java的HTTP客户端库(如HttpURLConnection或Apache HttpClient)来构建请求,发送HTTP/HTTPS请求来发送和接收短信。 2. **消息模板**:为了提高效率和可维护性,程序...

    Java如何处理ICMP报文的收发

    ### Java如何处理ICMP报文的收发 #### 背景介绍 ICMP(Internet Control Message Protocol)是一种网络层协议,主要用于传输错误消息和控制信息。在Java中,由于其设计初衷是为了提供一个跨平台的高级编程环境,...

    java Exchange收发邮件加附件

    Java通过Exchange进行邮件收发及附件操作主要涉及的是Microsoft Exchange Web Services (EWS) API的使用,这是一种基于SOAP协议的服务,允许开发者通过编程方式与Exchange Server进行交互。下面将详细介绍如何利用...

    java做的短消息平台通过网络进行收发信息平台

    1. 多线程:为了处理多个并发请求,平台需要利用Java的Thread类或者ExecutorService来创建并管理线程,确保高并发下的系统稳定性和响应速度。 2. 异步处理:采用非阻塞I/O(NIO)或反应式编程模型,如Reactor模式,...

    基于JAVA的短信收发代码

    1. `短信收发.vbp`:这是Visual Basic Project的文件,但在这个Java项目中可能是误传或者为了方便理解而使用了VB的类比。在Java中,项目结构通常包括src目录(源代码)、lib目录(依赖库)、build目录(编译结果)等...

    java 收发短信

    在Java中,你可以通过HTTP请求方式(如使用HttpURLConnection或Apache HttpClient)来调用这些API。发送短信的基本步骤包括: 1. **构建请求参数**:通常需要设置手机号码、短信内容、签名等信息,以及API密钥。 2....

    java短信收发系统

    Java短信收发系统是一种基于Java编程语言开发的用于发送和接收短信的应用程序。这个系统通常包含客户端和服务端两部分,客户端用于用户交互,服务端则处理短信的发送和接收任务。在Java手机短信项目源码中,我们可以...

    内部简易邮件收发功能java实现

    标题“内部简易邮件收发功能java实现”表明我们要探讨的是如何使用Java编程语言来构建一个简单的电子邮件系统。这个系统可能包含发送和接收邮件的基本功能,适用于小型项目或内部通信需求。 描述中的链接指向了一个...

    java手机短信收发程序源码

    Java手机短信收发程序是一种基于Java编程语言实现的软件,用于发送和接收手机短信。这个程序的核心在于利用Java的Socket通信技术以及相关的SMS协议来与移动运营商的短信网关进行交互。下面将详细介绍该程序涉及的...

    邮箱收发系统java版源代码(附使用说明和截图)

    本资源为一款基于Java开发的邮箱收发系统,包含了完整的源代码,旨在提供一个功能完善的邮件服务解决方案。这个系统利用了Java的强大力量,尤其是其在网络编程和服务器端应用中的优势,配合jsp和servlet技术,实现了...

    JAVA socket收发数据,并支持断网自动连接

    本话题主要关注如何使用Java Socket实现数据的收发,并在客户端断网或者服务器重启后实现自动重连功能。 1. **Java Socket基础** - **Socket类**:在Java中,`java.net.Socket`类代表一个TCP连接,它封装了输入/...

    java收发短信jar版,不需要自己写代码

    本文将详细解析标题为“java收发短信jar版,不需要自己写代码”的资源,包括其核心功能、如何使用以及可能涉及的技术点。 该资源提供了一个预打包的jar文件——sendsMs-WjUtil01.jar,它是一个Java库,专门用于短信...

    Java如何处理ARP报文的收发

    包含的 `dll` 文件需要放到 Java 运行环境(JRE)的 `bin` 目录下,而 `jar` 文件则应放入 `lib/ext` 目录,以便 Java 能够识别并使用这个库。 2. **安装与配置**:如果你不希望手动复制文件,可以选择使用提供的...

    java 发送http和https请求的实例

    在 Java 中,发送 HTTP 请求可以使用 HttpURLConnection 类。下面是一个简单的实例: ```java public static String httpRequest(String requestUrl, String requestMethod, String outputStr) { StringBuffer ...

    基于Java的邮件收发系统源码.zip

    【标题】基于Java的邮件收发系统源码.zip是一个包含Java编程语言实现的邮件收发系统完整源代码的压缩文件。这个系统可能被设计为帮助用户发送和接收电子邮件,是学习Java邮件处理技术的一个实例。 【描述】描述中的...

    基于Javamail的邮件收发系统(系统+论文+开题报告+任务书+外文翻译)_jsp_java源程序代码.rar

    2. 服务器端逻辑:后端使用Java编写,负责处理用户请求,如验证用户身份、连接邮件服务器、发送或接收邮件。这部分代码会调用Javamail API来与邮件服务器通信,遵循SMTP(Simple Mail Transfer Protocol)协议发送...

    JAVA源码Javamail的邮件收发系统源码/文档

    2. **性能优化**:对于大规模的应用场景,需要对系统进行适当的优化,比如使用缓存机制减少不必要的网络请求。 3. **安全性**:确保所有敏感信息都得到了妥善的加密处理,防止数据泄露。 #### 七、总结 JavaMail ...

Global site tag (gtag.js) - Google Analytics