[英]RestSharp - bad converting string to json c#
您好,不知道為什么,但是當我嘗試使用 RestSharp 進行 POST 時,轉換數據時出現了問題。
我正在嘗試使用 baselinker 發布數據:
API: https ://api.baselinker.com/index.php?tester 當我剛剛在網站上發布他們的測試時,反應很好:
但是當我嘗試通過 RestSharp 使用代碼做同樣的事情時:
public async Task xdAsync()
{
var client = new RestClient("https://api.baselinker.com/connector.php");
string token = "my API token here";
RestRequest request = new RestRequest();
request.AddParameter("token", token);
request.AddParameter("method", "addProductVariant");
request.AddParameter("application/json","{\"storage_id\":\"bl_1\",\"product_id\":\"67564668\",\"variant_id\":1055421650,\"name\":\"42\",\"quantity\":5,\"price_brutto\":599.99,\"ean\":29193201490}",ParameterType.RequestBody);
var response = await client.PostAsync(request);
Console.WriteLine(response.Content);
}
它給我的只是這樣的回應:
{"status":"ERROR","error_code":"ERROR_STORAGE_ID","error_message":"Invalid storage identifier provided."}
我認為轉換字符串或其他東西有錯誤。 我嘗試了很多沒有 slahes 的更改,嘗試使用@
並且仍然找不到解決方案,也許有人對 RestSharp 或 smoething 有類似的問題?
另外,當我嘗試另一種方法時
//wyslanie requesta:
var url = "https://reqbin.com/echo/post/json";
var httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.Accept = "application/x-www-form-urlencoded";
httpRequest.Headers["Authorization"] = "My API KEY";
httpRequest.ContentType = "application/json";
var data = @"{
""addProductVariant"":{ ""storage_id"":""bl_1"",
""product_id"":""67564668"",
""variant_id"":""10525421650"",
""name"":""42"",
""quantity"":""10"",
""price_brutto"":""599.99"",
""ean"":""29193201490"" }
} ";
using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream()))
{
streamWriter.Write(data);
}
var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine(result.ToString());
}
Console.WriteLine(httpResponse.StatusCode);
我通過httpRequest
得到 reposne,如下所示:
{"success":"true"}
OK
我對這種方法沒有完全回應,但它有效。
你必須添加內容類型
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer "+token);
.... your code
var body="{\"storage_id\":\"bl_1\",\"product_id\":\"67564668\",\"variant_id\":1055421650,\"name\":\"42\",\"quantity\":5,\"price_brutto\":599.99,\"ean\":29193201490}";
request.AddParameter("application/json",body,ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var json=response.Content;
如果您使用的是最新的 RestSharp,則不應像添加 body 參數那樣添加內容類型標頭。
var client = new RestClient("https://api.baselinker.com/connector.php");
var token = "my API token here";
var request = new RestRequest()
.AddParameter("token", token);
.AddParameter("method", "addProductVariant");
.AddStringBody("\"storage_id\":\"bl_1\",\"product_id\":\"67564668\",\"variant_id\":1055421650,\"name\":\"42\",\"quantity\":5,\"price_brutto\":599.99,\"ean\":29193201490}", DataFormat.Json);
var response = await client.PostAsync(request);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.