簡體   English   中英

使用 RestSharp 將 Curl 轉換為 C#

[英]Converting Curl to C# with RestSharp

我正在嘗試使用 RestSharp 將此 curl 命令轉換為 C#,並且我在數據參數方面遇到了問題(此示例中,令牌和 uri 變量已被替換為虛擬值):

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'UserToken: usertoken' --header 'AppToken: apptoken' -d '[{"individualRecordNumber":"foo","score":"bar"}]' 'apiEndpoint'

我已經能夠在同一個 API 中成功地執行幾個 GET 請求,所以我對整體請求格式和標頭很好,我只是在弄清楚如何格式化數據以及 append 它的位置時遇到問題。 這是沒有數據的請求的 rest:

var client = new RestClient(apiEndpoint);
var request = new RestRequest(Method.POST);
request.AddHeader("usertoken", usertoken);
request.AddHeader("apptoken", apptoken);
request.AddHeader("content-type", "application/json");
    
IRestResponse response = client.Execute(request);

我嘗試將 AddParameter 和 AddJsonBody 與數據的序列化和非序列化版本的各種組合一起使用。

將數據直接構建為字符串的示例:

string examInfo = @"[{""individualRecordNumber"":""foo"",""score"":""bar""}]";

構建數據為 object 的示例:

object[] arrayObj = new object[1];
arrayObj[0] = new { individualRecordNumber = "foo", score = "bar" };

這是一個周轉時間非常緊迫的項目,因此非常感謝任何幫助!

如果你需要一個 Post 來“連接” Post-Body,AddParameter 有這個重載

request.AddParameter("application/json", "mybody", ParameterType.RequestBody);

或者,在你的情況下

request.AddParameter("application/json", examInfo, ParameterType.RequestBody);

但也許更好(如果你有更高版本)

request.AddJsonBody(new { A = "foo", B = "bar" });

和最初的構造函數:(你似乎有,但一定要為未來的讀者注意它)

var request = new RestRequest(Method.POST);

更完整的例子:

var client = new RestClient("https:blahblahblah");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");

/* option1 */
request.AddParameter("application/json", "{mybody:'yes'}", ParameterType.RequestBody);

/* OR option 2 */
request.AddJsonBody(new { A = "foo", B = "bar" });

IRestResponse response = client.Execute(request);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM