C# Core. Как в Core использовать RestClient?

440
07 февраля 2017, 18:34

Есть код:

var client = new RestClient("http://api2.online-convert.com/jobs");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("x-oc-api-key", "<your API key here>");
request.AddParameter("application/json", 
    "{\"input\":[{\"type\":\"remote\",\"source\":\"http://static.online-convert.com/example-file/raster%20image/jpg/example_small.jpg\"}],\"conversion\":[{\"category\":\"image\",\"target\":\"png\"}]}",
    ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Но он используется на старой версии .Net. В новой нет класса RestClient и RestRequest. Я начал переделывать:

HttpWebRequest request = null;
request = (HttpWebRequest)WebRequest.Create("http://api2.online-convert.com/jobs");
request.Accept = @"application/json;text/xml";
request.Method = "POST";
Stream requestStream = request.GetRequestStreamAsync().Result;

Но я не знаю как мне параметры использовать:

request.AddParameter("application/json", 
    "{\"input\":[{\"type\":\"remote\",\"source\":\"http://static.online-convert.com/example-file/raster%20image/jpg/example_small.jpg\"}],\"conversion\":[{\"category\":\"image\",\"target\":\"png\"}]}",
    ParameterType.RequestBody);
Answer 1

Отсюда:

 // POST a JSON string
 void POST(string url, string jsonContent) 
 {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    Byte[] byteArray = encoding.GetBytes(jsonContent);
    request.ContentLength = byteArray.Length;
    request.ContentType = @"application/json";
    using (Stream dataStream = request.GetRequestStream()) {
        dataStream.Write(byteArray, 0, byteArray.Length);
    }
    long length = 0;
    try {
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
            length = response.ContentLength;
        }
    }
    catch (WebException ex) {
        // Log exception and throw as for GET example above
    }
}

Вызываем функцию для отправки запроса:

var Parameters;
// ... заполняем параметры динамически
var serializer = new JavaScriptSerializer();
string RequestParameters = serializer.Serialize(Parameters);
// Отправляем запрос
string Response = this.Post("http://api2.online-convert.com/jobs", RequestParameters);
MyResponse Response = serializer.Deserialize<MyResponse>(Response);

Альтернативно вы можете воспользоваться библиотекой RestSharp.

READ ALSO
Символ юникода для имени хоста

Символ юникода для имени хоста

Могу ли я каким то образом, запустив httpListener по префиксу "http://+:8080", после этого послать на него запрос? Или же символы юникода нельзя использовать...

478
Скопировать часть байтов из файла c#

Скопировать часть байтов из файла c#

Есть файл 3exe, в котором записаны еще 2 файла : 1

494
Как поместить таблицу в кэш?

Как поместить таблицу в кэш?

Имеются 3 таблицы в MS SQL:

506
побайтно прочитать файл, когда он открыт C#

побайтно прочитать файл, когда он открыт C#

Моя история тянется с прошлой темы:

488