我正在使用RestSharp与Web服务进行通信。
我使用此代码
public static object GetTagValue(string url, string tagname, out string resp)
{
object result = null;
resp = string.Empty;
string theReq = string.Format("tags/{0}", tagname);
var client = new RestClient(url);
var request = new RestRequest(theReq, Method.GET);
request.RequestFormat = DataFormat.Json;
IRestResponse response = client.Execute(request);
resp = response.Content;
if (!string.IsNullOrWhiteSpace(resp))
{
dynamic json = JValue.Parse(resp);
if (null != json.value)
{
result = json.value;
}
}
return result;
}
致电服务器
获取http://ame-hp/tags/int32 HTTP / 1.1
接受:application / json,application / xml,text / json,text / x-json, text / javascript,text / xml
User-Agent:RestSharp / 105.2.3.0
主持人:ame-hp
Accept-Encoding:gzip,deflate
服务器对工作电话的响应:
HTTP / 1.1 200好
服务器:Internet Pack HTTP Server
连接:关闭
Set-Cookie:SID = f11985564d; Expires = Fri,2017年1月27日07:52:17 GMT;路径= /
Content-Type:application / json
内容长度:133
{ “质量”: “好”, “说明”: “”, “名称”: “INT32”, “值”:0, “数据类型”: “INT32”, “控制器”:[],“初值“:NULL,” 只读“:假}
它正在工作,但在两次通话后,服务以此
回答{"Code":503,"Message":"Service Unavailable - Maximum number of active clients reached."}
第三次调用服务器
获取http://ame-hp/tags/int32 HTTP / 1.1
接受:application / json,application / xml,text / json,text / x-json, text / javascript,text / xml
User-Agent:RestSharp / 105.2.3.0
主持人:ame-hp
Accept-Encoding:gzip,deflate
连接:Keep-Alive
服务器对从现在开始直到服务器重启的所有来电的响应
HTTP / 1.1 503服务不可用 - 活动客户端的最大数量 达到。
服务器:Internet Pack HTTP Server
连接:Keep-Alive
Content-Type:application / json
内容长度:88
{“代码”:503,“消息”:“服务不可用 - 最大活动数量 客户到达。“}
所以我假设该服务有两个客户端的限制。 但为什么存在两个活跃的客户?
服务器或RestSharp是否未关闭连接,但是哪个?
我可以在RestSharp中做些什么来关闭连接吗?
答案 0 :(得分:0)
问题是,正如我所假设的那样,服务器只允许2个客户端。在第一个连接上,会发送一个会话Cookie,这必须用于其余的呼叫。
在RestSharp中,您只需添加一行即可实现此目的
创建客户端之后(顺便说一下,您需要重用所有的调用)。你添加这一行:
client.CookieContainer = new System.Net.CookieContainer();
客户端的初始化将是
client = new RestClient();
client.CookieContainer = new System.Net.CookieContainer();
然后你可以使用
client.BaseUrl = new Uri(url);
设置您要拨打的网址