Http操作类


  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Net;
6 using System.IO;
7
8 namespace LongFor.BLL
9 {
10 /// <summary>
11 /// Http操作类
12 /// </summary>
13 public static class HttpRequestUtil
14 {
15 private static Encoding DEFAULT_ENCODING = Encoding.GetEncoding("utf-8");
16 private static string ACCEPT = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
17 private static string CONTENT_TYPE = "application/x-www-form-urlencoded;charset=utf-8";
18 private static string USERAGENT = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; msn OptimizedIE8;ZHCN)";
19 // "application/x-www-form-urlencoded;charset=gb2312";
20 /// <summary>
21 /// 获取网址HTML
22 /// </summary>
23 /// <param name="url">网址 </param>
24 /// <returns> </returns>
25 public static string GetHtmlContent(string url)
26 {
27 return GetHtmlContent(url, DEFAULT_ENCODING);
28 }
29
30 /// <summary>
31 /// 获取网址HTML
32 /// </summary>
33 /// <param name="url">网址 </param>
34 /// <returns> </returns>
35 public static string GetHtmlContent(string url, Encoding encoding)
36 {
37 string html = string.Empty;
38 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
39 request.UserAgent = USERAGENT;
40 request.Credentials = CredentialCache.DefaultCredentials;
41 WebResponse response = request.GetResponse();
42 using (Stream stream = response.GetResponseStream())
43 {
44 using (StreamReader reader = new StreamReader(stream, encoding))
45 {
46 html = reader.ReadToEnd();
47 reader.Close();
48 }
49 }
50 return html;
51 }
52
53 /// <summary>
54 /// 获取网站cookie
55 /// </summary>
56 /// <param name="url">网址 </param>
57 /// <returns> </returns>
58 public static string GetCookie(string url)
59 {
60 string cookie = string.Empty;
61 WebRequest request = WebRequest.Create(url);
62 request.Credentials = CredentialCache.DefaultCredentials;
63 using (WebResponse response = request.GetResponse())
64 {
65 cookie = response.Headers.Get("Set-Cookie");
66 }
67 return cookie;
68 }
69
70 /// <summary>
71 /// Post模式浏览
72 /// </summary>
73 /// <param name="url">网址</param>
74 /// <param name="data">流</param>
75 /// <returns> </returns>
76 public static byte[] Post(string url, byte[] data)
77 {
78 return Post(null, url, data, null);
79 }
80
81 /// <summary>
82 /// Post模式浏览
83 /// </summary>
84 /// <param name="server">服务器地址 </param>
85 /// <param name="url">网址</param>
86 /// <param name="data">流</param>
87 /// <param name="cookieHeader">cookieHeader</param>
88 /// <returns> </returns>
89 public static byte[] Post(string server, string url, byte[] data, string cookieHeader)
90 {
91 if (data == null || data.Length == 0)
92 {
93 throw new ArgumentNullException("data");
94 }
95 HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
96 if (!string.IsNullOrEmpty(cookieHeader))
97 {
98 if (string.IsNullOrEmpty(server))
99 {
100 throw new ArgumentNullException("server");
101 }
102 CookieContainer co = new CookieContainer();
103 co.SetCookies(new Uri(server), cookieHeader);
104 httpWebRequest.CookieContainer = co;
105 }
106 httpWebRequest.ContentType = CONTENT_TYPE;
107 httpWebRequest.Accept = ACCEPT;
108 httpWebRequest.Referer = server;
109 httpWebRequest.UserAgent = USERAGENT;
110 httpWebRequest.Method = "Post";
111 httpWebRequest.ContentLength = data.Length;
112 using (Stream stream = httpWebRequest.GetRequestStream())
113 {
114 stream.Write(data, 0, data.Length);
115 stream.Close();
116 }
117 using (HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse())
118 {
119 using (Stream stream = webResponse.GetResponseStream())
120 {
121 long contentLength = webResponse.ContentLength;
122 byte[] bytes = new byte[contentLength];
123 bytes = ReadFully(stream);
124 stream.Close();
125 return bytes;
126 }
127 }
128 }
129
130 private static byte[] ReadFully(Stream stream)
131 {
132 byte[] buffer = new byte[128];
133 using (MemoryStream ms = new MemoryStream())
134 {
135 while (true)
136 {
137 int read = stream.Read(buffer, 0, buffer.Length);
138 if (read <= 0)
139 return ms.ToArray();
140 ms.Write(buffer, 0, read);
141 }
142 }
143 }
144
145 /// <summary>
146 /// Get模式浏览
147 /// </summary>
148 /// <param name="url">Get网址</param>
149 /// <returns> </returns>
150 public static byte[] Get(string url)
151 {
152 return Get(null, url, null);
153 }
154
155 /// <summary>
156 /// Get模式浏览
157 /// </summary>
158 /// <param name="url">Get网址</param>
159 /// <param name="cookieHeader">cookieHeader</param>
160 /// <param name="server">服务器地址 </param>
161 /// <returns> </returns>
162 public static byte[] Get(string server, string url, string cookieHeader)
163 {
164 HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
165 if (!string.IsNullOrEmpty(cookieHeader))
166 {
167 if (string.IsNullOrEmpty(server))
168 {
169 throw new ArgumentNullException("server");
170 }
171 CookieContainer co = new CookieContainer();
172 co.SetCookies(new Uri(server), cookieHeader);
173 httpWebRequest.CookieContainer = co;
174 }
175 httpWebRequest.Accept = "*/*";
176 httpWebRequest.Referer = server;
177 httpWebRequest.UserAgent = USERAGENT;
178 httpWebRequest.Method = "GET";
179 HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
180 using (Stream stream = webResponse.GetResponseStream())
181 {
182 long contentLength = webResponse.ContentLength;
183 byte[] bytes = new byte[contentLength];
184 bytes = ReadFully(stream);
185 stream.Close();
186 return bytes;
187 }
188 }
189 }
190 }

调用方式:

PostData="queuename=roomsync&body={lengths:2,page:-1,datas:[67763C16-D5C7-4297-B73F-00009BA7D178,066F9157-1E7F-474C-9333-0000CBB2FB43]}";

upRoomUrl="http://192.168.33.166:8080/web/queue";


 1 /// <summary>
2 /// 发送更新房间数据服务
3 /// </summary>
4 /// <param name="PostData">需要发送的数据</param>
5 /// <param name="type">数据来源类型</param>
6 public static void SendService(string PostData, string type)
7 {
8 string upRoomUrl = ConfigurationManager.AppSettings.GetValues("upRoomUrl")[0];//计算更新房间数据接口地址
9 if (upRoomUrl != "null")
10 {
11 LogWrape.LoggerInfo(logger, type + ",增量计算房间表数据:" + PostData, DateTime.Now.ToString());
12 byte[] bt = System.Text.Encoding.UTF8.GetBytes(PostData);
13 string retMsg = System.Text.Encoding.UTF8.GetString(HttpRequestUtil.Post(upRoomUrl, bt));
14 LogWrape.LoggerInfo(logger, type + ",增量计算房间表数据返回结果:" + retMsg, DateTime.Now.ToString());
15 }
16 }

Http操作类

时间: 2024-12-14 14:13:02

Http操作类的相关文章

ASP.net如何保证EF操作类线程内唯一

说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实现原理也是通过数据槽callcontext) 将EF操作类通过键值对方法保存在HttpContext.Current.Items["key"],封装成方法直接调用 2.callcontext public static DbContext CreateDbContext() { DbCon

反射之操作类,方法,属性等

1.操作类 获取类,并通过反射获取一个实例对象 Class class1 = Student.class; Student student = (Student)class1.newInstance();   //默认调用无参数的构造方法 student.setName("heh"); System.out.println(student.getName()); 2.操作构造方法   获取指定参数类型的构造方法,通过此对象创建一个特定参数值的实例对象 Class class1 = St

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

使用RedisTemplate的操作类访问Redis(转载)

原文地址:http://www.cnblogs.com/luochengqiuse/p/4641256.html private ValueOperations<K, V> valueOps; private ListOperations<K, V> listOps; private SetOperations<K, V> setOps; private ZSetOperations<K, V> zSetOps; 1. RedisOperations接口说明

php 的mysql操作类

亲自测试,网上其他版本没法用,有很多错误,这是本人亲自测试用的,绝对增删改查都可以. <?php /** * Created by Netbeans. * User: Lugo * Date: 16-7-14 * Version: 1.0.0 * Time: 上午10:50 */ class MysqlHelper { const HOST="localhost"; const DATABASE = "demo"; const ENCODING = "

数字(数学)操作类 Math Random 类 ,大数字操作类

Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法 重点看这个操作,四舍五入 System.out.println(Math.round(-16.5)) ; -16 System.out.println(Math.round(16.5)) ; 17 大于等于0.5进位. Random类 取得随机数的类 java.util 包 产生100之内的随机整数 Random rand = new Random() ; for(int x = 0 ; x < 10 ; x ++

完整的文件和目录操作类

using System; using System.Text; using System.IO; namespace HelloCsharp.Utilities { /// <summary> /// 文件操作类 /// </summary> public static class DirFile { #region 检测指定目录是否存在 /// <summary> /// 检测指定目录是否存在 /// </summary> /// <param n

ecshop的Mysql操作类

摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MYSQL 公用类库 * ============================================================================ * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利. * 网站地址: http://www.ecsho

深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis

上一篇说了RedisTemplate对注解事务的支持,以及提供的序列化器. 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了.但是通过回调去获取connection,完全没有达到一个模版类的功能.所以这篇我们会讲下几种Operations接口提供的方法. private ValueOperations<K, V> valueOps; private

C#语法糖之Cookies操作类 asp.net

用法: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key = "cokey"; //获取实例 var cookiesManager = CookiesManager<List<string>>.GetInstance(); //插入缓存 cookiesManager.Add