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 工具的更多相关文章

  1. slim

    Slim 是一个非常优雅的 PHP 微框架,非常适合做API,支持多种http请求方式,比如get,post,delete,put等 安装使用Composer composer require sli ...

  2. 微信小程序:java后台获取openId

    一.功能描述 openId是某个微信账户对应某个小程序或者公众号的唯一标识,但openId必须经过后台解密才能获取(之前实现过前台解密,可是由于微信小程序的种种限制,前台解密无法在小程序发布后使用) ...

  3. java开发微信公众号支付(JSAPI)

    https://www.cnblogs.com/gopark/p/9394951.html,这篇文章写的已经很详细了. 下面写一下自己的思路: 1.首先下载demo,地址:https://pay.we ...

  4. Java请求Http

    一.工具类,直接粘贴调用即可 package cn.com.service.httpReq; import java.io.BufferedReader;import java.io.IOExcept ...

  5. 树莓派学习笔记——Restful服务 采用slim php apache

    0.前言     前些时间沉迷于Restful,采用PHP+Slim+MySQL实现了一些简单的API函数.但是这些工作都是在windows中实现(采用wamp server集成安装包),但是转到li ...

  6. java工具类

    1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...

  7. WPF开发查询加班小工具

    先说一下,我们公司是六点下班,超过7点开始算加班,但是加班的时间是从六点开始计算,以0.5个小时为计数,就是你到了六点半,不算加班半小时,但是加班到七点半,就是加班了一个半小时. 一.打卡记录 首先, ...

  8. java http工具类和HttpUrlConnection上传文件分析

    利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...

  9. Android高手速成--第二部分 工具库

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

随机推荐

  1. python语句结构(控制语句与pass语句)

    python语句结构(控制语句和pass语句) break-跳出循环:语句可以跳出for和while语句的循环体.如果你从for和while循环中终止,任何对应循环的else语块均终止 continu ...

  2. netty http 服务器

    HttpFileServer package com.zhaowb.netty.ch10_1; import io.netty.bootstrap.ServerBootstrap; import io ...

  3. Caffe系列1——网络文件和求解分析

    1. 首先,我们先看一个完整的文件:lenet_train_test.prototxt name: "LeNet" #整个网络的名称 layer { #数据层——训练数据 name ...

  4. 【颓废篇】easyx--2048

    整天待在机房是不是,一直保持学术的态度就比较的难啊~ 所以本蒟蒻就在学术之余学了些奇技淫巧,然后就写了一些奇奇怪怪的程序啊,比如让我们小组dalao们都颓得不亦乐乎的2048~~ 当然,2048的实现 ...

  5. Python全栈开发:web框架之tornado

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  6. nodejs vue 微信公众号开发(二)申请微信测试号

    1.打开微信测试公众号开发平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 扫码登陆

  7. fiddler抓包工具遇到的问题-------502报错

    遇到的问题: 打开浏览器,输入本机的虚拟机地址的bugfree,出现无法连接的提示,具体是: [Fiddler] The connection to '192.168.211.128' failed. ...

  8. 自然数幂求和——第二类Strling数

    这个问题似乎有很多种求法,但感觉上第二类Strling数的做法是最方便的. 问题 求下面这个式子: ∑i=0nik\sum_{i=0}^n i^ki=0∑n​ik nnn的范围可以很大. 第二类Str ...

  9. 阿里巴巴大数据产品最新特性介绍--机器学习PAI

    以下内容根据演讲视频以及PPT整理而成. 本次分享主要围绕以下五个方面: PAI产品简介 自定义算法上传 数加智能生态市场 AutoML2.0自动调参 AutoLearning自动学习 一.PAI产品 ...

  10. C++数组或vector求最大值最小值

    可以用max_element()及min_element()函数,二者返回的都是迭代器或指针. 头文件:#include<algorithm> 1.求数组的最大值或最小值 1)vector ...