簡體   English   中英

無法添加參數以使用 C# RestSharp 客戶端發出 GET 請求

[英]Not able to add parameters to make GET request with C# RestSharp client

這是我第一次使用 API,非常感謝您對我的幫助和耐心。

我正在向客戶端 Synccentric 發出 GET 請求以獲取數據 [給定下面的 URL 我用於參考]。

https://api.synccentric.com/?version=latest#cb8d3255-7639-435e-9d17-c9e962c24146

[更新]

我找到了一種將參數附加到查詢字符串的方法,並且響應得到了驗證。 我仍然堅持傳遞字段數組。

            var client = new RestClient("https://v3.synccentric.com/api/v3/products");
            var request = new RestRequest(Method.GET);
            Console.WriteLine("**** Adding Headers, Content Type & Auth Key ****");
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", "Bearer {{MyAPIToken}}");
            request.AddParameter("campaign_id", 12618);
            request.AddParameter("downloadable", 1);
            request.AddParameter("downloadable_type", "csv");
            string[] fields = new[] { "asin", "upc", "actor", "all_categories", "is_eligible_for_prime", "listing_url" };
            request.AddParameter("fields", fields);
            IRestResponse response = client.Execute(request);

我想我知道問題出在哪里

參數列表

所以第[5]個參數理想情況下應該保持這個值 "[\n \"asin\",\n \"upc\",\n \"additional_image_1\",\n \"category\",\n \" is_eligible_for_prime\",\n \"listing_url\"\n ]"

但相反,它看起來像這樣。

你們能幫我解決這個問題嗎?

我嘗試使用 Python 調用 API 並參考文檔,我確實得到了所需的響應。

在下面附加 python 塊:

import requests
url = 'https://v3.synccentric.com/api/v3/products'
payload = "{\n    \"campaign_id\": 12618,\n    \"fields\": [\n        \"asin\",\n        \"upc\",\n        \"additional_image_1\",\n        \"category\",\n        \"is_eligible_for_prime\",\n        \"listing_url\"\n    ]\n}    #\"downloadable\":1,\n       \"downloadable_type\":\"csv\"\n}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{MyAPIToken}}'
}
response = requests.request('GET', url, headers = headers, data = payload,  timeout= 100000 , allow_redirects= 0)
print(response.text)

執行后,我得到了我正在尋找的回應。

RestSharp 不允許您發送帶有內容主體的 GET 請求。 錯誤說明了一切。

您必須將參數作為查詢參數發送。

Console.WriteLine("**** Starting Synccentric API Fetch ****");
var client = new RestClient("https://v3.synccentric.com/api/v3/products");
var request = new RestRequest(Method.GET);

Console.WriteLine("**** Adding Headers, Content Type & Auth Key ****");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{MyAPIToken}}");

Console.WriteLine("**** Adding parameters ****");
request.AddParameter("campaign_id", 12618);
request.AddParameter("downloadable", "true");
request.AddParameter("downloadable_type", "CSV");

var fields = new[] { "asin", "upc", "actor", "all_categories" };
foreach (var field in fields)
{
    request.AddParameter("fields", field);
}

IRestResponse response = client.Execute(request);

這將為您構建以下查詢字符串,應該發送並希望可以理解。

https://v3.synccentric.com/api/v3/products?campaign_id=12618&downloadable=True&downloadable_type=CSV&fields=asin&fields=upc&fields=actor&fields=all_categories

更新查看評論后,可能是 RestSharp 不能與 API 一起使用,因為它似乎需要帶有 GET 請求的內容正文!

暫無
暫無

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

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