请求rest web服务client
RestClient
using System;
using System.Globalization;
using System.IO;
using System.Net;
using System.Text; [assembly: CLSCompliant(true)]
namespace Downloader
{
public enum HttpVerb
{
Get,
Post,
Put,
Delete
} /// <summary>
/// Restful Service Client
/// </summary>
public class RestClient
{
/// <summary>
/// application/json
/// </summary>
private string _contentType = "application/json";
/// <summary>
/// 15000
/// </summary>
private int _timeout = ;
/// <summary>
/// Service Uri
/// </summary>
public string EndPoint { get; set; }
/// <summary>
/// Post || Get
/// </summary>
public HttpVerb Method { get; set; }
/// <summary>
/// Default "text/xml"
/// </summary>
public string ContentType { get { return _contentType; } set { _contentType = value; } }
/// <summary>
/// eg. "'test':'abcd'"
/// </summary>
public string PostData { get; set; }
/// <summary>
/// TimeOut ms
/// </summary>
public int Timeout { get { return _timeout; } set { _timeout = value; } }
/// <summary>
/// Default Constructor
/// </summary>
public RestClient()
{
EndPoint = "";
Method = HttpVerb.Get;
ContentType = _contentType;
PostData = "{}";
Timeout = _timeout;
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="endpoint">Service Uri</param>
public RestClient(string endpoint)
{
EndPoint = endpoint;
Method = HttpVerb.Get;
ContentType = _contentType;
PostData = "{}";
Timeout = _timeout;
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="endpoint">Service Uri</param>
/// <param name="method">Post || Get</param>
public RestClient(string endpoint, HttpVerb method)
{
EndPoint = endpoint;
Method = method;
ContentType = _contentType;
PostData = "{}";
Timeout = _timeout;
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="endpoint">Service Uri</param>
/// <param name="method">Post || Get</param>
/// <param name="postData">eg. "{'test':'abcd'}"</param>
public RestClient(string endpoint, HttpVerb method, string postData)
{
EndPoint = endpoint;
Method = method;
ContentType = _contentType;
PostData = postData;
Timeout = _timeout;
}
/// <summary>
/// Request server
/// </summary>
/// <returns></returns>
public string MakeRequest()
{
return MakeRequest("");
}
/// <summary>
/// Request server
/// </summary>
/// <param name="parameters">eg. "?q=1234"</param>
/// <returns></returns>
public string MakeRequest(string parameters)
{
var service = new Uri(EndPoint + parameters);
var request = WebRequest.Create(service);
request.Timeout = Timeout;
request.Method = Method.ToString().ToUpper(CultureInfo.CurrentCulture);
request.ContentLength = ;
request.ContentType = ContentType; if (Method == HttpVerb.Post)
{
// PostData = "{" + PostData + "}";
var bytes =Encoding.UTF8.GetBytes(PostData);
request.ContentLength = bytes.Length; using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, , bytes.Length);
}
} using (var response = (HttpWebResponse)request.GetResponse())
{
var responseValue = string.Empty;
if (response.StatusCode != HttpStatusCode.OK)
{
var message = String.Format(CultureInfo.CurrentCulture, "Request failed. Received HTTP {0}", response.StatusCode);
throw new WebException(message);
}
using (var responseStream = response.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
return responseValue;
}
}
/// <summary>
/// 同步更新二进制文件
/// </summary>
/// <param name="parameters">URL参数</param>
/// <param name="postData">表单提交参数</param>
/// <returns></returns>
public byte[] MakeRequest(string parameters, string postData)
{
var service = new Uri(EndPoint + parameters);
var request = WebRequest.Create(service);
request.Timeout = Timeout;
request.Method = Method.ToString().ToUpper(CultureInfo.CurrentCulture);
request.ContentLength = ;
request.ContentType = ContentType; if (Method == HttpVerb.Post)
{
// PostData = "{" + postData + "}";
var bytes = Encoding.UTF8.GetBytes(PostData);
request.ContentLength = bytes.Length; using (var writeStream = request.GetRequestStream())
{
writeStream.Write(bytes, , bytes.Length);
}
} using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
var message = String.Format(CultureInfo.CurrentCulture, "Request failed. Received HTTP {0}", response.StatusCode);
throw new WebException(message);
}
using (var result = new MemoryStream())
{
const int bufferLen = ;
var buffer = new byte[bufferLen];
using (var responseStream = response.GetResponseStream())
{
var len = responseStream.Read(buffer, , bufferLen);
while (len > )
{
result.Write(buffer, , len);
len = responseStream.Read(buffer, , bufferLen);
}
}
return result.ToArray();
}
}
} } }
请求rest web服务client的更多相关文章
- 利用python httplib模块 发送Post请求测试web服务是否正常起来!
最近在学习python,恰好老大最近让我搞个基于post请求测试web服务是否正常启用的小监控,上网查了下资料,发现强大的Python恰好能够用上,所以自己现学现卖,顺便锻炼下自己. 由于本人也刚接触 ...
- 如何检测 Web 服务请求丢失问题
导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...
- Azure机器学习入门(四)模型发布为Web服务
接Azure机器学习(三)创建Azure机器学习实验,下一步便是真正地将Azure机器学习的预测模型发布为Web服务.要启用Web服务发布任务,首先点击底端导航栏的运行即"Run" ...
- Web服务端性能提升实践
随着互联网的不断发展,日常生活中越来越多的需求通过网络来实现,从衣食住行到金融教育,从口袋到身份,人们无时无刻不依赖着网络,而且越来越多的人通过网络来完成自己的需求. 作为直接面对来自客户请求的Web ...
- WEB服务动静结合
基本介绍 1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件 2)常见的应用服务软件有:PHP.Java.Python等 3)问题:WEB服务如何与外部 ...
- 通过 Jersey Http请求头,Http响应头,客户端 API 调用 REST 风格的 Web 服务
原地址:http://blog.csdn.net/li575098618/article/details/47853263 Jersey 1.0 是一个开源的.可以用于生产环境的 JAX-RS(RES ...
- 记录一个调试REST风格的web服务的client
coogle浏览器的advanced rest client很好用,记录一下,脑子不好,容易忘,,可以在chrome 的网上应用店添加 Rest client是用来调试REST风格的Web服务,接收P ...
- [WEB API] CLIENT 指定请求及回应格式(XML/JSON)
[Web API] Client 指定请求及响应格式(xml/json) Web API 支持的格式请参考 http://www.asp.net/web-api/overview/formats-an ...
- HTTP协议基础与web服务的重定向,跳转以及请求转发
JavaWeb中,HttpServletRequest与HttpServletResponse几乎是处理各种请求与操作必备的参数,与原始的ServletRequest/ServletResponse相 ...
随机推荐
- drupal前端开发的第一点
就是把admin/config/development/performance下面的选项全部去掉,方便作为一个匿名用户来访问,不用每次都drush cc all.
- laravel 控制器方法里存get值 和 blade 模板获得闪存值的方法
//get 方式把id传到路由 <a href="/admin/reply/add/{{$comment -> id}}" class="btn btn-bl ...
- public && protected && private
http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html 1.public继承不改变基类成员的访问权限. 2.priva ...
- Red Hat 6.0 Linux系统跳过登录界面直接进入系统
修改/etc/init/tty.conf文件将exec /sbin/mingetty $TTY改为exec /sbin/mingetty --autologin root $TTY 或者修改/etc/ ...
- 不错的TOMCAT监控好工具probe
Tomcat版本:6.0.41 Probe版本:2.3.3 一,Tomcat没有默认用户账号,故首先需要添加Tomcat用户账号 修改$CATALINA_HOME/conf/tomcat-users. ...
- ubuntu+php5.6+redis+mysql5.5+nginx
thinkphp : location / { if (!-e $request_filename) { rewrite ^ ...
- solr windows 启动和关闭命令
进入bin目录执行 启动:solr -e dih 停止:solr stop -all D:\Solr\solr-5.2.1\solr-5.2.1\bin>solr -e dih
- JavaAppArguments
- JavaScript本地对象 内置对象 宿主对象
在ECMAScript中,所有对象并非同等创建的. 一般来说,可以创建并使用的对象有3种:本地对象.内置对象和宿主对象. 1. 本地对象 ECMA-262把本地对象(native obje ...
- Android常见控件— — —Button
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...