it-swarm.com.ru

Вызов и использование Web API в winform с использованием C # .net

Я новичок и создаю приложение winform. В котором я должен использовать API для простой операции CRUD. Мой клиент поделился API со мной и попросил отправить данные в форме JSON.

API: http://blabla.com/blabla/api/login-valida

КЛЮЧ: «HelloWorld»

Значение: {"email": "[email protected]", "password": "123456", "time": "2015-09-22 10:15:20"}

Ответ: Login_id

Как я могу преобразовать данные в JSON, вызвать API с помощью метода POST и получить ответ?

EDIT Где-то на stackoverflow я нашел это решение

public static void POST(string url, string jsonContent)
    {
        url="blabla.com/api/blala" + url;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseURL);
        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
        {
            throw;
        }
    }
//on my login button click 
    private void btnLogin_Click(object sender, EventArgs e)
    {
        CallAPI.POST("login-validate", "{ \"email\":" + txtUserName.Text + " ,\"password\":" + txtPassword.Text + ",\"time\": " + DateTime.Now.ToString("yyyy-MM-dd h:mm tt") + "}");
    }

Я получил исключение, которое говорит: «Удаленный сервер возвратил ошибку: (404) Not Found».

6
Kalpesh Bhadra

Вы можете взглянуть на 

Первое, что вам нужно, это установить клиентские библиотеки Web API:
В меню Сервис выберите Диспетчер пакетов библиотеки, затем выберите Консоль диспетчера пакетов. В окне консоли диспетчера пакетов введите следующую команду:

Install-Package Microsoft.AspNet.WebApi.Client

Затем отправьте запрос на почту, как это

// HTTP POST
var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };
response = await client.PostAsJsonAsync("api/products", gizmo);
if (response.IsSuccessStatusCode)
{
    // Get the URI of the created resource.
    Uri gizmoUrl = response.Headers.Location;
}
7
Reza Aghaei
  • Используйте Json.Net для преобразования данных в JSON
  • Использовать WebClient для POST данных
4
Richard Schneider

Просто используйте следующую библиотеку.

https://www.nuget.org/packages/RestSharp

Проект GitHub: https://github.com/restsharp/RestSharp

Образец кода::

    public Customer GetCustomerDetailsByCustomerId(int id)
    {
        var client = new RestClient("http://localhost:3000/Api/GetCustomerDetailsByCustomerId/" + id);
        var request = new RestRequest(Method.GET);
        request.AddHeader("X-Token-Key", "dsds-sdsdsds-swrwerfd-dfdfd");
        IRestResponse response = client.Execute(request);
        var content = response.Content; // raw content as string
        dynamic json = JsonConvert.DeserializeObject(content);
        JObject customerObjJson = jsonData.CustomerObj;
        var customerObj = customerObjJson.ToObject<Customer>();
        return customerObj;
    }
1
Sajeeb Chandan