我一直在寻找,似乎没有任何效果。
我正在尝试连接到我的REST(WCF)服务。它使用以下内容在firefox中正常工作:
http://localhost:1337/WCF.IService.svc/rest/Services?CostCentreNo=1&Filter=1
其中rest
是端点地址;
Services?CostCentreNo=1&Filter=1
是带有参数的模板
以下是服务器合同点。
[OperationContract]
[WebGet(UriTemplate = "/Services?CostCentreNo={CostCentreNo}&Filter={Filter}")]
List<Services> GetServices(Int32 CostCentreNo, Int32 Filter);
我是否可以通过c#..
获得一个连接到此的实例答案 0 :(得分:4)
通过扩展System.ServiceModel.ClientBase<IYourServiceContract>
来创建自己的代理。 REST服务上的每个方法都通过Channel
属性公开,因此您可以将它们包装起来。
[ServiceContract]
public interface IMyServiceContract
{
[OperationContract]
[WebGet(UriTemplate = "/ping")]
string Ping();
}
public class ProxyClient : ClientBase<IMyServiceContract>, IMyServiceContract
{
#region Implementation of IMyServiceContract
public string Ping()
{
return Channel.Ping();
}
#endregion
}
public class Test
{
// This assumes you have setup a client endpoint in your .config file
// that is bound to IMyServiceContract.
var client = new Client();
System.Console("Ping replied: " + client.Ping());
}
不幸的是,这是针对WCF消费的,并不能与REST完美配合,即它不公开HTTP头,这是RESTful实现所必需的。
答案 1 :(得分:2)
尝试使用JSON:
String resonse = String.Empty;
HttpClient client = new HttpClient();
using (HttpResponseMessage httpResponse = client.Get("your_uri"))
{
response = httpResponse.Content.ReadAsString();
}
此代码需要WCF Rest Toolkit中的Microsoft.Http
和Microsoft.Http.Extensions
dll - http://aspnet.codeplex.com/releases/view/24644。
答案 2 :(得分:0)
对于带有示例源的通用/动态解决方案,请参阅http://www.nikhilk.net/CSharp-Dynamic-Programming-REST-Services.aspx