HttpRequest 工具
1.根据 url 和 encoding 获取当前url页面的 html 源代码
public static string GetHtml(string url, Encoding encoding)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
try
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK && response.ContentLength < * )
{
if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
reader = new StreamReader(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding);
else
reader = new StreamReader(response.GetResponseStream(), encoding);
string html = reader.ReadToEnd(); return html;
}
}
catch (Exception ex)
{
}
finally
{ if (response != null)
{
response.Close();
response = null;
}
if (reader != null)
reader.Close(); if (request != null)
request = null;
}
return string.Empty;
}
2.获取URL访问的HTML内容
public static string GetWebContent(string Url)
{
string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Timeout = ;
request.Headers.Set("Pragma", "no-cache"); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream(); Encoding encoding = Encoding.GetEncoding("utf-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch
{ } return strResult;
}
3.根据网站url获取流
public static Stream GetWebUrlStream(string Url)
{
Stream stream = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
stream = response.GetResponseStream();
}
return stream;
}
4.根据发送数据获取url 流对象
public static Stream GetWebUrlStream(string Url, string body)
{
Stream stream = null;
Encoding code = Encoding.GetEncoding("utf-8");
byte[] bytesRequestData = code.GetBytes(body);
try
{
//设置HttpWebRequest基本信息
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Timeout = ;
request.Method = "post";
request.ContentType = "application/octet-stream";
//填充POST数据
request.ContentLength = bytesRequestData.Length; Stream reqStream = request.GetRequestStream();
reqStream.Write(bytesRequestData, , bytesRequestData.Length);
HttpWebResponse wr = (HttpWebResponse)request.GetResponse();
if (wr.StatusCode == HttpStatusCode.OK)
{
//在这里对接收到的页面内容进行处理
stream = wr.GetResponseStream();
}
}
catch { }
return stream;
}
5.根据post 数据填充url 获取html对象
public static string PostHtml(string Url, string body)
{
Encoding code = Encoding.GetEncoding("utf-8");
byte[] bytesRequestData = code.GetBytes(body);
string strResult = "";
try
{
//设置HttpWebRequest基本信息
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Timeout = ;
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; //填充POST数据
request.ContentLength = bytesRequestData.Length; using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(bytesRequestData, , bytesRequestData.Length);
}
using (WebResponse wr = request.GetResponse())
{
//在这里对接收到的页面内容进行处理
Stream myStream = wr.GetResponseStream();
//获取数据必须用UTF8格式
StreamReader sr = new StreamReader(myStream, code);
strResult = sr.ReadToEnd();
}
}
catch { }
return strResult;
}
6.将本地文件上传到指定的服务器(HttpWebRequest方法)
public static string PostUpData(string address, string fileNamePath, string saveName, string dataName)
{
string returnValue = "";
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);//时间戳
string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n");
//请求头部信息
StringBuilder sb = new StringBuilder();
sb.Append("--");
sb.Append(strBoundary);
sb.Append("\r\n");
sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", dataName, saveName);
sb.Append("\r\n");
sb.Append("Content-Type: application/octet-stream");
sb.Append("\r\n");
sb.Append("\r\n");
string strPostHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
//根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(address);
httpReq.Method = "POST";
//对发送的数据不使用缓存
httpReq.AllowWriteStreamBuffering = false;
//设置获得响应的超时时间(300秒)
httpReq.Timeout = ;
httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary;
long length = fs.Length + postHeaderBytes.Length + boundaryBytes.Length;
long fileLength = fs.Length;
httpReq.ContentLength = length;
try
{
Stream postStream = httpReq.GetRequestStream();
//发送请求头部消息
postStream.Write(postHeaderBytes, , postHeaderBytes.Length); //每次上传4k
byte[] buffer = new Byte[checked((uint)Math.Min(, (int)fs.Length))];
fs.Seek(, SeekOrigin.Begin);
int bytesRead = ;
while ((bytesRead = fs.Read(buffer, , buffer.Length)) != )
postStream.Write(buffer, , bytesRead);
//添加尾部的时间戳
postStream.Write(boundaryBytes, , boundaryBytes.Length);
postStream.Close();
//获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
//读取服务器端返回的消息
returnValue = sr.ReadToEnd();
s.Close();
sr.Close();
}
catch
{ }
finally
{
fs.Close();
}
return returnValue;
}
7.将网址图片上传到指定的服务器(HttpWebRequest方法)
public static string PostUpDataUrlImg(string address, string fileNamePath, string saveName, string dataName)
{
string returnValue = "";
// 要上传的文件
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
Image original_image = Image.FromStream(GetWebUrlStream(fileNamePath));
MemoryStream ms = new MemoryStream();
original_image.Save(ms, format);
original_image.Clone();
//时间戳
string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n");
//请求头部信息
StringBuilder sb = new StringBuilder();
sb.Append("--");
sb.Append(strBoundary);
sb.Append("\r\n");
sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", dataName, saveName);
sb.Append("\r\n");
sb.Append("Content-Type: application/octet-stream");
sb.Append("\r\n");
sb.Append("\r\n");
string strPostHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
//根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(address);
httpReq.Method = "POST";
//对发送的数据不使用缓存
httpReq.AllowWriteStreamBuffering = false;
//设置获得响应的超时时间(30秒)
httpReq.Timeout = ;
httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary;
long length = ms.Length + postHeaderBytes.Length + boundaryBytes.Length;
long fileLength = ms.Length;
httpReq.ContentLength = length;
try
{
Stream postStream = httpReq.GetRequestStream();
//发送请求头部消息
postStream.Write(postHeaderBytes, , postHeaderBytes.Length); //每次上传4k
byte[] buffer = new Byte[checked((uint)Math.Min(, (int)ms.Length))];
ms.Seek(, SeekOrigin.Begin);
int bytesRead = ;
while ((bytesRead = ms.Read(buffer, , buffer.Length)) != )
postStream.Write(buffer, , bytesRead);
//添加尾部的时间戳
postStream.Write(boundaryBytes, , boundaryBytes.Length);
postStream.Close();
//获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
//读取服务器端返回的消息
returnValue = sr.ReadToEnd();
s.Close();
sr.Close();
}
catch
{ }
finally
{
ms.Close();
}
return returnValue;
}
8.将网络地址文件上传到指定的服务器
public static string PostHttpUpData(string address, string fileNamehttp, string saveName, string dataName)
{
string returnValue = "";
WebClient wc = new WebClient();
//网址文件下载
byte[] downData = wc.DownloadData(fileNamehttp);
wc.Dispose();
//时间戳
string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n");
//请求头部信息
StringBuilder sb = new StringBuilder();
sb.Append("--");
sb.Append(strBoundary);
sb.Append("\r\n");
sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", dataName, saveName);
sb.Append("\r\n");
sb.Append("Content-Type: application/octet-stream");
sb.Append("\r\n");
sb.Append("\r\n");
string strPostHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
//根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(address);
httpReq.Method = "POST";
//对发送的数据不使用缓存
httpReq.AllowWriteStreamBuffering = false;
//设置获得响应的超时时间(300秒)
httpReq.Timeout = ;
httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary;
long length = downData.Length + postHeaderBytes.Length + boundaryBytes.Length;
httpReq.ContentLength = length;
try
{
Stream postStream = httpReq.GetRequestStream();
//发送请求头部消息
postStream.Write(postHeaderBytes, , postHeaderBytes.Length); //发送内容消息
postStream.Write(downData, , downData.Length); //添加尾部的时间戳
postStream.Write(boundaryBytes, , boundaryBytes.Length); postStream.Close();
//获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
//读取服务器端返回的消息
returnValue = sr.ReadToEnd();
s.Close();
sr.Close();
}
catch { }
return returnValue;
}
9.将网址图片上传到指定的服务器(HttpWebRequest方法)
public static string PostUpDataUrlImg(string address, string fileNamePath, string saveName, string dataName, string body)
{
string returnValue = "";
Stream stream = GetWebUrlStream(fileNamePath, body);
List<byte> bytes = new List<byte>();
int temp = stream.ReadByte();
while (temp != -)
{
bytes.Add((byte)temp);
temp = stream.ReadByte();
}
byte[] WebUrlStream = bytes.ToArray();//时间戳
string strBoundary = "----------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + strBoundary + "\r\n");
//请求头部信息
StringBuilder sb = new StringBuilder();
sb.Append("--");
sb.Append(strBoundary);
sb.Append("\r\n");
sb.AppendFormat("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"", dataName, saveName);
sb.Append("\r\n");
sb.Append("Content-Type: application/octet-stream");
sb.Append("\r\n");
sb.Append("\r\n");
string strPostHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);
//根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(address);
httpReq.Method = "POST";
//对发送的数据不使用缓存
httpReq.AllowWriteStreamBuffering = false;
//设置获得响应的超时时间(30秒)
httpReq.Timeout = ;
httpReq.ContentType = "multipart/form-data; boundary=" + strBoundary;
long length = WebUrlStream.Length + postHeaderBytes.Length + boundaryBytes.Length;
long fileLength = WebUrlStream.Length;
httpReq.ContentLength = length;
try
{
Stream postStream = httpReq.GetRequestStream();
//发送请求头部消息
postStream.Write(postHeaderBytes, , postHeaderBytes.Length);
postStream.Write(WebUrlStream, , WebUrlStream.Length);
//添加尾部的时间戳
postStream.Write(boundaryBytes, , boundaryBytes.Length);
postStream.Close();
//获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
//读取服务器端返回的消息
returnValue = sr.ReadToEnd();
s.Close();
sr.Close();
}
catch
{ }return returnValue;
}
HttpRequest 工具的更多相关文章
- slim
Slim 是一个非常优雅的 PHP 微框架,非常适合做API,支持多种http请求方式,比如get,post,delete,put等 安装使用Composer composer require sli ...
- 微信小程序:java后台获取openId
一.功能描述 openId是某个微信账户对应某个小程序或者公众号的唯一标识,但openId必须经过后台解密才能获取(之前实现过前台解密,可是由于微信小程序的种种限制,前台解密无法在小程序发布后使用) ...
- java开发微信公众号支付(JSAPI)
https://www.cnblogs.com/gopark/p/9394951.html,这篇文章写的已经很详细了. 下面写一下自己的思路: 1.首先下载demo,地址:https://pay.we ...
- Java请求Http
一.工具类,直接粘贴调用即可 package cn.com.service.httpReq; import java.io.BufferedReader;import java.io.IOExcept ...
- 树莓派学习笔记——Restful服务 采用slim php apache
0.前言 前些时间沉迷于Restful,采用PHP+Slim+MySQL实现了一些简单的API函数.但是这些工作都是在windows中实现(采用wamp server集成安装包),但是转到li ...
- java工具类
1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...
- WPF开发查询加班小工具
先说一下,我们公司是六点下班,超过7点开始算加班,但是加班的时间是从六点开始计算,以0.5个小时为计数,就是你到了六点半,不算加班半小时,但是加班到七点半,就是加班了一个半小时. 一.打卡记录 首先, ...
- java http工具类和HttpUrlConnection上传文件分析
利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...
- Android高手速成--第二部分 工具库
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
随机推荐
- 2019-8-31-dotnet-core-发布只带必要的依赖文件
title author date CreateTime categories dotnet core 发布只带必要的依赖文件 lindexi 2019-08-31 16:55:58 +0800 20 ...
- 锋利的Jquery(p的onclick()事件)
1.一个p元素的点击事件 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="serve ...
- JS 标签页切换
一 <!DOCTYPE html><html><head><meta charset="utf-8"/><title>自 ...
- 用在 AMD64 上 aria2_1.33.1-1_amd64.deb 的下载页面
用在 AMD64 上 aria2_1.33.1-1_amd64.deb 的下载页面 如果您正在运行 Ubuntu,请尽量使用像 aptitude 或者 synaptic 一样的软件包管理器,代替人工手 ...
- opensuse 通过composer安装drush工具
由于笔者的opensuse已安装好composer,所以按照官方网站的文章 Installing/Upgrading Drush on Ubuntu,使用composer形式安装drush工具. co ...
- 【BZOJ4407】于神之怒加强版
题面 题目分析 \[ \begin{split} \sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)^k&=\sum\limits_{d=1}^nd^ ...
- DbUtils要点小结
一. DbUtils核心API 1. QueryRunner update方法 query方法 2. 各种Handler都实现ResultSetHandler接口 beanhandler beanli ...
- Eclipse连接android模拟器
1.打开eclipse 2.打开MuMu模拟器 3.去到MuMu模拟器 adb_server.exe 文件所在目录:(我的:I:\Android\mumu\emulator\nemu\vmonitor ...
- Java-Shiro:目录
ylbtech-Java-Shiro:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://yl ...
- Android之FrameLayout帧布局
1.简介 这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角; 帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看 ...