RestSharp用法小結

2021-09-06 13:36:00 字數 3076 閱讀 3077

今天有空,小結一下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. 實現介面irestapiexecutor
using 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 api
var 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 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...