今天有空,小結一下restsharp的用法。
restsharp內建了xml和json的反序列化(deserializers )。
text/json – jsondeserializer
text/xml – xmldeserializer
* – xmldeserializer (all other content types not specified)
比如下面的實體類:
public class employee
public int employeename
public int employeeage
}
對應的xml:
< employeeid >1< /employeeid >
< employeename>john
< employeeage>30
對應的json:
1. 非同步呼叫client.executeasync(request, response => );
2. 實現介面irestapiexecutorusing restsharp;
using system;
using system.threading.tasks;
namespace mycompany
public string defaultdateparameterformat
public iauthenticator defaultauthenticator
private restclient client;
public restapiexecutor(string cmsbaseuri, iauthenticator authenticator = null, string dateparameterformat = null)
public t genericexecute(restrequest request) where t : new()
return response.data;
}public restrequestasynchandle asyncgenericexecute(restrequest request, action> action) where t : new()
public taskgettaskasync(restrequest request) where t : new()
public irestresponse execute(restrequest request)
return response;
}public byte downloaddata(restrequest request)
}}
3. 實現自己的業務邏輯,包括using system.xml.linq;
using restsharp;
using system;
using system.configuration;
using system.io;
using system.linq;
namespace mycompany
public myclient(string cmsbaseuri, string dateformat, string username = null, string password = null)
#endregion
//http get,返回json,自動反序列化為實體類
public orderresult getorders(datetime date, string channel = null, string merchant = null, string venue = null)
", date));
if (!string.isnullorempty(channel)) request.addparameter("channel", channel);
if (!string.isnullorempty(merchant)) request.addparameter("merchant", merchant);
if (!string.isnullorempty(venue)) request.addparameter("venue", venue);
return restapiexecutor.genericexecute(request);
}//http get,獲得返回的xml字串,並轉為xdocument
public xdocument getorderdetailsxml(int orderid)
//http post, 提交乙個zip包
public irestresponse uploadzipfile(string filename, byte filecontent)
public byte downloadpartialordermedia()
}}
3. 非同步讀取restful apivar client = new restclient("");
var request = new restrequest("product/42", method.get);
var content = await client.getcontentasync(request);
擴充套件方法:
using system;
using system.threading.tasks;
using restsharp;
namespace restsharpex
else
});return tcs.task;
}public static taskgetcontentasync(this restclient client, irestrequest request)
public static taskgetresponseasync(this restclient client, irestrequest request)
}}
this用法小結
this主要是用作引用乙個類的當前例項物件,也可以用在擴充套件方法裡面,我主要總結一下前者的主要用途。1.用來限定被相同名字隱藏的類成員。這裡主要指的就是建構函式。比如 public employee4 string name,string id 這是乙個類的建構函式,this.name是之前宣告的...
RestSharp簡單的HTTP請求輔助類
在.net中,using system.net包可以使用httpwebrequest發起乙個http請求 return result 這是使用.net原生的方法。這裡需要處理流,還得關閉它們。而restsharp封裝好了這些東東,簡潔易用,還能自主反序列化請求結果。下面來看看使用restsharp後...
static用法小結
static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...