C # Hue Bridge PUT отправляет ответ OK.Нет ответа API - PullRequest
0 голосов
/ 24 сентября 2018

ТАК Я искал вокруг и даже спрашивал на соседских мертвых официальных форумах.Я искал здесь, но ответы были лет и часто содержат мертвые ссылки.

Я просто пытаюсь включить свет в моем доме.Я уже авторизовался с помощью инструмента отладки, получил свое «имя пользователя» и жестко запрограммировал его в этом приложении.Опять же, это только я проверяю это.Я даже скопировал функциональный URL (http://192.168.0.100/api/RjplsYoXQvdTl11DOVIo92SKNB7vYRfwZvqCzvDK/lights/2/) в другие браузеры и устройства), чтобы мне не приходилось обрабатывать reauth на разных устройствах. Да, я также знаю, что перехожу с синхронизации на асинхронную, ноесли только это не проблема, я не беспокоюсь о том, чтобы повесить программу там. Я просто пытаюсь что-то переключить в API:)

Так что проблема в том, что ответ - это просто общий ответ HTTP 200 OK, а неответ API, как и ожидалось.

Я получаю:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent, Headers:
 {
 Server: nginx
 Date: Sun, 23 Sep 2018 18:37:44 GMT
 Connection: close
 Cache-Control: no-store, must-revalidate, no-cache, post-check=0, pre-check=0
 Pragma: no-cache
 Access-Control-Max-Age: 3600
 Access-Control-Allow-Origin: *
 Access-Control-Allow-Credentials: true
 Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
 Access-Control-Allow-Headers: Content-Type
 Content-Type: application/json
 Expires: Mon, 01 Aug 2011 09:00:00 GMT
 }

когда я ожидаю

   {"success":{"/lights/1/state/on":false}},

Вот код.Может кто-то пролить свет на это?Спасибо

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;


namespace ConsoleApp1
{

    class Program
    {
        static HttpClient client = new HttpClient();
        static HttpResponseMessage response = new HttpResponseMessage();

        public class StateO
        {
            public bool On { get; set; }
            public int Bri { get; set; }
        }
        public class Light
        {
            public string Name { get; set; }
            public StateO State { get; set; }
            public Light()
            {
                State = new StateO();
            }
        }

        static void Main(string[] args)
        {
            client.BaseAddress = new Uri("http://192.168.0.100/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
            UpdateProductAsync().GetAwaiter().GetResult();

        }
        public static async Task<Light> UpdateProductAsync()
        {
            Light light = new Light();
            light.State.On = false;
            string json = JsonConvert.SerializeObject(light);

            response = await client.PutAsJsonAsync(
                $"api/RjplsYoXQvdTl11DOVIo92SKNB7vYRfwZvqCzvDK/lights/2/", json);
            Console.WriteLine("potato: " + response.ToString());
            response.EnsureSuccessStatusCode();
            // light = await response.Content.ReadAsAsync<Light>();
            return light;
        }
    }

}

1 Ответ

0 голосов
/ 24 сентября 2018

Это IP-адрес правильный для вашего моста?Заголовок вашего ответа поступает с сервера Nginx.

Также кажется, что вы немного запутались с конечными точками Hue API.

PUT Запрос на /api/<username>/lights/<id> - переименовать источники света

PUT запрос к /api/<username>/lights/<id>/state должен изменить состояние освещения

Документация здесь

...