Мне не удается опубликовать эти данные JSON в теле с помощью restsharp:
{
"odds-type":"DECIMAL",
"exchange-type":"back-lay",
"offers":
[{
"runner-id":401525949430009,
"side":"back",
"odds": 2.4,
"stake": 5.0
}
]}
Я уже сделал это с более простой конечной точкой для входа в систему:
Данные JSON для размещенияпри входе в систему было просто:
{
"username": "jblogss",
"password": "verysecurepassword"
}
и рабочий код C #, который я использовал:
public void Login(ref RestClient WClient)
{
WClient.CookieContainer = new System.Net.CookieContainer();
var request = new RestRequest(SECURITY, Method.POST);
request.RequestFormat = DataFormat.Json;
AskCredentials();
request.AddBody(new { username = UserName, password = Password }); // uses JsonSerializer
IRestResponse response = WClient.Execute(request); //var response = WCient.Execute(request); works well too
Display("LOGIN", response.Content, "Pretty", "Login.JSON");
o_Login = PostLoginObject.FromJson(response.Content);
}
Но для JSON в начале я пробовал так много вещей, но ни одна из них не работала.Любая идея?
У меня есть рабочий код C # для этих данных JSON, но не в restsharp (который я хотел бы):
public void PlaceOfferOnRunner()
{
try
{
string accessCommand = "offers";
string responseData = string.Empty;
HttpWebRequest request = null;
request = WebRequest.Create("" + AccessApi.baseAddress + "" + accessCommand + "") as HttpWebRequest;
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Uri(AccessApi.apiAddress), new Cookie("session-token", Login.SessionToken));
request.ContentType = "application/json; charset=utf-8";
request.Accept = "application/json";
request.Method = "POST";
string data = "{'odds-type':'" + OddType + "','exchange-type':'" + ExchangeType + "','offers':[{'odds': '" + Odds + "'," +
"'stake':" + Stake + ",'side':'" + Side + "','runner-id':" + RunnerId + "}]}";
JObject jsonData = JObject.Parse(data);
request.ContentLength = jsonData.ToString().Length;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(jsonData);
streamWriter.Flush();
streamWriter.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
responseData = reader.ReadToEnd();
JObject parsedJson = JObject.Parse(responseData);
OfferId = parsedJson["offers"][0]["id"].ToString();
Console.WriteLine(parsedJson);
AccessApi.CallDataAccessMethods("o", "Offers to show offer status");
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.Message);
}
finally { AccessApi.GetParameterValues("PlaceOfferOnRunner"); }
}
Когда я попробовал все и потерпел неудачу, яВернитесь к инструментам, которые обычно дают рабочий ответ в кратчайшие сроки, здесь почтальон дает код restsharp, но тоже терпит неудачу (я не могу поверить, что почтальон тоже терпит неудачу ...):
var client = new RestClient("https://api.matchbook.com/edge/rest /offers");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "4969dd04-a630-4d45- ba61-860edef63750");
request.AddHeader("Cache-Control", "no-cache");
request.AddParameter("undefined", "{\r\n \"odds-type\":\"DECIMAL\",\r\n \"exchange-type\":\"back-lay\",\r\n \"offers\":\r\n [{\r\n \"runner-id\":401525949430009,\r\n \"side\":\"back\",\r\n \"odds\": 2.4,\r\n \"stake\": 5.0\r\n }\r\n]}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);