`
ddd_5858
  • 浏览: 28731 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

java模拟http请求

    博客分类:
  • java
 
阅读更多
package com.th;

import java.util.Vector;

/**
 * 
 * 响应对象
 */

public class HttpRespons {

	String urlString;

	int defaultPort;

	String file;

	String host;

	String path;

	int port;

	String protocol;

	String query;

	String ref;

	String userInfo;

	String contentEncoding;

	String content;

	String contentType;

	int code;

	String message;

	String method;

	int connectTimeout;

	int readTimeout;

	Vector<String> contentCollection;

	public String getContent() {

		return content;

	}

	public String getContentType() {

		return contentType;

	}

	public int getCode() {

		return code;

	}

	public String getMessage() {

		return message;

	}

	public Vector<String> getContentCollection() {

		return contentCollection;

	}

	public String getContentEncoding() {

		return contentEncoding;

	}

	public String getMethod() {

		return method;

	}

	public int getConnectTimeout() {

		return connectTimeout;

	}

	public int getReadTimeout() {

		return readTimeout;

	}

	public String getUrlString() {

		return urlString;

	}

	public int getDefaultPort() {

		return defaultPort;

	}

	public String getFile() {

		return file;

	}

	public String getHost() {

		return host;

	}

	public String getPath() {

		return path;

	}

	public int getPort() {

		return port;

	}

	public String getProtocol() {

		return protocol;

	}

	public String getQuery() {

		return query;

	}

	public String getRef() {

		return ref;

	}

	public String getUserInfo() {

		return userInfo;

	}

}

package com.th;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.Vector;

/**
 * 
 * HTTP请求对象
 * 
 * 
 * 
 * @author
 */

public class req {

	private String defaultContentEncoding;

	public req() {

		this.defaultContentEncoding = Charset.defaultCharset().name();

	}

	/**
	 * 
	 * 发送GET请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendGet(String urlString) throws IOException {

		return this.send(urlString, "GET", null, null);

	}

	/**
	 * 
	 * 发送GET请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @param params
	 * 
	 *            参数集合
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendGet(String urlString, Map<String, String> params)

	throws IOException {

		return this.send(urlString, "GET", params, null);

	}

	/**
	 * 
	 * 发送GET请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @param params
	 * 
	 *            参数集合
	 * 
	 * @param propertys
	 * 
	 *            请求属性
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendGet(String urlString, Map<String, String> params,

	Map<String, String> propertys) throws IOException {

		return this.send(urlString, "GET", params, propertys);

	}

	/**
	 * 
	 * 发送POST请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendPost(String urlString) throws IOException {

		return this.send(urlString, "POST", null, null);

	}

	/**
	 * 
	 * 发送POST请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @param params
	 * 
	 *            参数集合
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendPost(String urlString, Map<String, String> params)

	throws IOException {

		return this.send(urlString, "POST", params, null);

	}

	/**
	 * 
	 * 发送POST请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 *            URL地址
	 * 
	 * @param params
	 * 
	 *            参数集合
	 * 
	 * @param propertys
	 * 
	 *            请求属性
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	public HttpRespons sendPost(String urlString, Map<String, String> params,

	Map<String, String> propertys) throws IOException {

		return this.send(urlString, "POST", params, propertys);

	}

	/**
	 * 
	 * 发送HTTP请求
	 * 
	 * 
	 * 
	 * @param urlString
	 * 
	 * @return 响映对象
	 * 
	 * @throws IOException
	 */

	private HttpRespons send(String urlString, String method,

	Map<String, String> parameters, Map<String, String> propertys)

	throws IOException {

		HttpURLConnection urlConnection = null;

		if (method.equalsIgnoreCase("GET") && parameters != null) {

			StringBuffer param = new StringBuffer();

			int i = 0;

			for (String key : parameters.keySet()) {

				if (i == 0)

					param.append("?");

				else

					param.append("&");

				param.append(key).append("=").append(parameters.get(key));

				i++;

			}

			urlString += param;

		}

		URL url = new URL(urlString);

		urlConnection = (HttpURLConnection) url.openConnection();

		urlConnection.setRequestMethod(method);

		urlConnection.setDoOutput(true);

		urlConnection.setDoInput(true);

		urlConnection.setUseCaches(false);

		if (propertys != null)

			for (String key : propertys.keySet()) {

				urlConnection.addRequestProperty(key, propertys.get(key));

			}

		if (method.equalsIgnoreCase("POST") && parameters != null) {

			StringBuffer param = new StringBuffer();

			for (String key : parameters.keySet()) {

				param.append("&");

				param.append(key).append("=").append(parameters.get(key));

			}

			urlConnection.getOutputStream().write(param.toString().getBytes());

			urlConnection.getOutputStream().flush();

			urlConnection.getOutputStream().close();

		}

		return this.makeContent(urlString, urlConnection);

	}

	/**
	 * 
	 * 得到响应对象
	 * 
	 * 
	 * 
	 * @param urlConnection
	 * 
	 * @return 响应对象
	 * 
	 * @throws IOException
	 */

	private HttpRespons makeContent(String urlString,

	HttpURLConnection urlConnection) throws IOException {

		HttpRespons httpResponser = new HttpRespons();

		try {

			InputStream in = urlConnection.getInputStream();

			BufferedReader bufferedReader = new BufferedReader(

			new InputStreamReader(in));

			httpResponser.contentCollection = new Vector<String>();

			StringBuffer temp = new StringBuffer();

			String line = bufferedReader.readLine();

			while (line != null) {

				httpResponser.contentCollection.add(line);

				temp.append(line).append("\r\n");

				line = bufferedReader.readLine();

			}

			bufferedReader.close();

			String ecod = urlConnection.getContentEncoding();

			if (ecod == null)

				ecod = this.defaultContentEncoding;

			httpResponser.urlString = urlString;

			httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();

			httpResponser.file = urlConnection.getURL().getFile();

			httpResponser.host = urlConnection.getURL().getHost();

			httpResponser.path = urlConnection.getURL().getPath();

			httpResponser.port = urlConnection.getURL().getPort();

			httpResponser.protocol = urlConnection.getURL().getProtocol();

			httpResponser.query = urlConnection.getURL().getQuery();

			httpResponser.ref = urlConnection.getURL().getRef();

			httpResponser.userInfo = urlConnection.getURL().getUserInfo();

			httpResponser.content = new String(temp.toString().getBytes(), ecod);

			httpResponser.contentEncoding = ecod;

			httpResponser.code = urlConnection.getResponseCode();

			httpResponser.message = urlConnection.getResponseMessage();

			httpResponser.contentType = urlConnection.getContentType();

			httpResponser.method = urlConnection.getRequestMethod();

			httpResponser.connectTimeout = urlConnection.getConnectTimeout();

			httpResponser.readTimeout = urlConnection.getReadTimeout();

			return httpResponser;

		} catch (IOException e) {

			throw e;

		} finally {

			if (urlConnection != null)

				urlConnection.disconnect();

		}

	}

	/**
	 * 
	 * 默认的响应字符集
	 */

	public String getDefaultContentEncoding() {

		return this.defaultContentEncoding;

	}

	/**
	 * 
	 * 设置默认的响应字符集
	 */

	public void setDefaultContentEncoding(String defaultContentEncoding) {

		this.defaultContentEncoding = defaultContentEncoding;

	}

}

package com.th;

import java.nio.charset.Charset;

public class resTest {

	public static void main(String[] args) {

		try {

			req request = new req();
			request.setDefaultContentEncoding("UTF-8");

			HttpRespons hr = request.sendGet("http://www.csdn.net");

			System.out.println(hr.getUrlString());

			System.out.println(hr.getProtocol());

			System.out.println(hr.getHost());

			System.out.println(hr.getPort());

			System.out.println(hr.getContentEncoding());

			System.out.println(hr.getMethod());

			System.out.println(hr.getContent());
			System.out.println(Charset.defaultCharset().name());

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

}
分享到:
评论

相关推荐

    使用Java模拟http请求.rar

    Java作为一种多用途的编程语言,提供了丰富的库来帮助开发者模拟HTTP请求,使得我们可以在程序中实现与服务器的交互,比如发送GET、POST请求,获取网页数据,甚至进行文件上传等操作。本教程将详细讲解如何使用Java...

    java模拟http请求的错误问题整理

    Java 模拟 HTTP 请求的错误问题整理 Java 模拟 HTTP 请求是一种常见的编程技术,然而在实际应用中,我们经常会遇到各种错误问题。下面是对 Java 模拟 HTTP 请求的错误问题的整理和分析。 问题一:Illegal ...

    java模拟http请求登陆抓取海投网信息

    在Java编程中,模拟HTTP请求是一项常见的任务,尤其在网页抓取、自动化测试以及网络数据获取等场景下。本项目涉及的关键技术点是利用HTTP客户端库进行登录操作,并抓取海投网的数据,随后将这些信息存储到MySQL...

    java发送http请求工具类

    在Java编程中,发送HTTP请求是一项常见的任务,无论是获取网页数据、调用API接口还是进行自动化测试,都可能涉及到。本篇文章将详细讲解一个简单的Java工具类,用于发送HTTP请求,该工具类名为HttpURLUtils。 首先...

    java模拟post请求

    java模拟客户端向服务器发送post请求

    JAVA模拟网页发送请求

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

    模拟Http请求

    主要分为以下几个部分:Http请求的基本概念、模拟Http请求的必要性、Apache HttpClient库的介绍及其在Java中的使用方法。 ### Http请求基本概念 Http(Hypertext Transfer Protocol)是用于从WWW服务器传输超文本...

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

    Java模拟HTTP请求是一种常见的网络通信技术,用于向服务器发送数据或获取服务器的响应。在这个场景中,我们将讨论如何使用Java来模拟HTTP请求并通过中国移动的飞信服务发送免费短信。飞信是一个允许用户发送免费短信...

    javaHttp异步请求

    在实际开发中,这样的测试文件通常包含各种HTTP请求和响应的模拟数据,用于确保异步请求和流式处理功能的正确性。 总之,Java中的HTTP异步请求通过`HttpAsyncClients`和自定义的回调处理类,如`...

    Java 模拟cookie登陆简单操作示例

    我们可以使用 Java 语言来发送 HTTP 请求,并将 Cookie 信息写入到 HTTP 头部中,以便模拟用户的登陆行为。 Java 模拟 Cookie 登陆的实现 下面是一个简单的 Java 模拟 Cookie 登陆的示例代码: ```java import ...

    java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

    在Java编程中,有时我们需要模拟浏览器发送HTTP请求,例如调用外部接口或API。`HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何...

    java模拟微信浏览器访问.rar

    这个“java模拟微信浏览器访问.rar”压缩包中的主要文件是“MonitorWeixinBrowser.java”,我们可以推测这是一个Java程序,用于模拟微信内置浏览器的行为。下面将详细介绍这个主题的相关知识点。 1. **Java HTTP ...

    java发起http请求提交表单

    ...此方法通常用于向服务器发送数据,例如用户提交的表单信息。 #### 核心知识点 ...从构建HTML表单到使用不同的库来模拟HTTP请求,再到处理表单参数,每一步都需要仔细考虑以确保数据的安全性和准确性。

    java模拟HTTP传送

    java墨迹HTTP请求传送图片。其中服务端部分可以另找我下载

    Java实现的Https请求工具类

    在Java编程中,HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP协议的安全通信协议,用于在客户端和服务器之间建立安全的、加密的数据传输通道。它主要用于保护用户数据,防止中间人攻击和数据篡改。本...

    JAVA模拟http上传文件_代码男_新浪博客

    当我们需要实现文件上传功能时,可以通过模拟HTTP请求来完成。这个过程通常涉及到表单提交、Multipart/form-data编码、HttpClient或者HttpURLConnection类的使用。下面将详细探讨这些知识点。 1. **HTTP POST请求**...

    andriod 模拟Http请求

    在Android开发中,模拟HTTP请求是一项基础且重要的任务,它允许应用与远程服务器进行数据交互,获取或发送信息。本文将深入探讨如何在Android平台上实现HTTP请求,主要涉及以下几个方面: 1. **HTTP协议基础**:...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    "JAVA利用HttpClient进行POST请求(HTTPS)" JAVA HttpClient是Apache软件基金会提供的一个开源实现HTTP客户端的Java库,能够帮助开发者轻松地与HTTP服务器进行交互。在实际项目中,我们经常需要使用HttpClient来发送...

    java 实现http请求的四种方式工具类

    java模拟网络请求,get post put delete四种模式,请求头处理参数处理。此文件仅供大家参考,稍作修改即可。

Global site tag (gtag.js) - Google Analytics