package com.travelsky.net.utils;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class NetTool {
/**
* 发送Post请求
* @param basePath 请求路径
* @param params 请求参数 key为参数名称,value为参数值
* @return
* @throws Exception
*/
public static InputStream sendPostRequest(String basePath, Map<String, String> params, String encoding) throws Exception {
StringBuilder sb = new StringBuilder();
for(Map.Entry<String, String> entry : params.entrySet()){
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), encoding));
sb.append('&');
}
sb.deleteCharAt(sb.length()-1);
byte[] data = (sb.toString()).getBytes();
URL url = new URL(basePath);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(6*1000);
conn.setDoOutput(true);//发送POST请求必须设置允许输出
conn.setUseCaches(false);//不使用Cache
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");//维持长连接
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
//application不能上传文件,如果要上传文件则 multipart
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
DataOutputStream dataOutStream = new DataOutputStream(conn.getOutputStream());
dataOutStream.write(data);
dataOutStream.flush();
dataOutStream.close();
if(200 == conn.getResponseCode()){
return conn.getInputStream();
}
return null;
}
/**
* 获取Url路径指定的内容
*
* @param basePath
* @param encoding
* @return
* @throws Exception
*/
public static String getTextContent(InputStream inStream, String encoding)
throws Exception {
byte[] data = readStream(inStream);
return new String(data, encoding);
}
/**
* 获取Url路径指定的内容
*
* @param basePath
* @param encoding
* @return
* @throws Exception
*/
public static InputStream getContent(String basePath)
throws Exception {
URL url = new URL(basePath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(6 * 1000);
if (200 == conn.getResponseCode()) {
return conn.getInputStream();
}
return null;
}
/**
* 获取给的Url路径的数据
*
* @param basePath
* Url路径
* @return
* @throws Exception
*/
public static byte[] getImage(String basePath) throws Exception {
URL url = new URL(basePath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(6 * 1000);
System.err.println(conn.getResponseCode());
if (200 == conn.getResponseCode()) {
InputStream inStream = conn.getInputStream();
byte[] data = readStream(inStream);
return data;
}
return null;
}
/**
* 读取数据
*
* @param inStream
* 输入流
* @return
* @throws Exception
*/
private static byte[] readStream(InputStream inStream) throws Exception {
byte[] buffer = new byte[1024];
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
int len = -1;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return outStream.toByteArray();
}
}
分享到:
相关推荐
【ASP中的Request Response语句语法解析】 在ASP(Active Server Pages)编程中,Request和Response对象是基础且至关重要的组成部分,对于初学者来说,理解这两个对象的使用是掌握ASP技术的关键。 Request对象允许...
在IT行业中,网络通信是核心部分之一,而`request`和`response`是HTTP协议中的两个基本概念,它们构成了客户端(如浏览器)与服务器端之间交互数据的核心机制。本篇文章将深入探讨这两个概念以及它们在实际开发中的...
`Request`和`Response`是一对紧密相连的对象,它们共同构成了HTTP通信的基础。在实际开发中,通常需要结合使用这两个对象来实现各种功能: - **转发**: - 使用`RequestDispatcher`接口的`forward()`方法可以在Web...
### ASP内置对象Request和Response详解 在Web开发领域,尤其是基于ASP(Active Server Pages)的环境中,`Request`和`Response`对象扮演着至关重要的角色。它们是ASP框架中的核心组件,负责处理客户端请求和服务器...
以下将详细介绍如何在Struts2的Action中获取request、response、session。 ### 1. 使用ActionContext获取request、response、session Struts2的Action可以通过`ActionContext`来间接获取`request`、`response`和`...
在Web开发中,请求(request)和响应(response)是HTTP协议的核心概念,它们是客户端与服务器交互的基础。在处理用户操作时,我们常常需要对页面进行跳转或重定向,这通常通过`request`和`response`对象来实现。这两者...
在探讨“request和response实现跳转和重定向的区别”这一主题时,我们深入研究了Web应用中的两个核心概念:Request和Response,以及它们如何通过不同的方法实现页面跳转和重定向,具体涉及到的方法包括Request的...
在ASP(Active Server Pages)开发中,`Response`和`Request`对象是两个核心的内置对象,它们在处理客户端和服务器之间的数据交换中扮演着重要角色。本教程将深入讲解这两个对象及其相关知识点。 首先,`Request`...
### Struts2中request与response的使用方法 #### 一、引言 Struts2作为Struts1的后续版本,在架构设计与实现机制上进行了大量的改进。相较于Struts1,Struts2对request、response、session等核心对象的处理方式有所...
在Web开发中,`response`和`request`是两个核心概念,它们构成了HTTP协议交互的基础。本章将深入探讨这两个对象及其在Web开发中的应用,尤其是对于初学者来说,理解它们的功能和工作原理至关重要。 首先,让我们从`...
例如,可以使用`Response.Write`打印字符串到页面,`Response.Redirect`将用户重定向到另一个URL,或者设置HTTP头信息,如`Response.ContentType`定义响应内容的类型。 在上面的1.asp示例中,它接收表单提交的...
### Request和Response知识点详解 #### 一、概述 在Web开发中,`Request`与`Response`对象是非常核心且基础的概念。它们是客户端与服务器端交互的重要桥梁,用于处理HTTP请求与响应。本文将深入剖析这两个对象的...
《PyPI官网下载 | http_request_response-0.0.8.tar.gz》 在Python的世界里,PyPI(Python Package Index)是官方的第三方库仓库,它为开发者提供了大量的开源库和工具,使得Python编程变得更加便捷。本文将围绕...
在"09_Java Web——Request&Response案例"这个主题中,我们聚焦于HTTP请求和响应这两个核心概念,它们是Web应用中客户端与服务器交互的基础。下面将详细阐述相关知识点。 1. **HTTP协议**:超文本传输协议(HTTP)...
本文将深入探讨如何在自定义中间件中读取`Request.Body`和`Response.Body`的内容。 首先,`Request.Body`代表HTTP请求的主体部分,通常用于发送POST数据或文件上传。它是`Stream`类型的,可以读取请求的数据。在ASP...
【标题】"响应请求"(Response Request)是一个关键的网络通信概念,特别是在Web开发和HTTP协议中。在HTTP协议中,客户端(通常是浏览器)向服务器发送一个请求(Request),服务器处理这个请求后会返回一个响应...
HTTP解析器 http-parser。 新项目和希望迁移的项目应考虑 。 这是用C编写的HTTP消息的解析器。它解析请求和响应。 该解析器旨在用于性能HTTP应用程序。 它不进行任何系统调用或分配,不缓冲数据,可以随时中断。 ...
本实例主要探讨Servlet中的两个关键对象:HttpServletRequest(Request)和HttpServletResponse(Response),它们是Servlet API的核心组成部分,用于处理HTTP请求和构建响应。 Request对象是用于获取客户端发送的...
轻松修改 javascript 配置文件中的 http 请求/响应。 Web UI,网页性能分析。 ======== 控制台信息 安装 npm install -g webproxy 快速开始 1、正常启动 $ webproxy start 2、修改默认LISTENING端口 $ webproxy ...