Win8 RT Metro 风格应用 HTTP 响应异步

本文关键字:HTTP 响应 异步 应用 风格 RT Metro Win8 | 更新日期: 2023-09-27 17:56:09

我有一个在 WPF 中为家庭自动化系统创建的 C# 应用。我想将其转换为 win8 现代 UI 应用程序只是为了好玩。我不是程序员,甚至不是接近...因此,任何指示将不胜感激。

这是我的旧代码,用于检查其中一个设备的状态。 以下内容仅检查指示灯的状态代码。 1 表示灯已打开...0 它已关闭。

        //InitializeComponent();
        WebRequest MasterbedRoomrequest = WebRequest.Create("http://10.10.1.100:3480/data_request?id=lu_variableget&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status&DeviceNum=7");
        HttpWebResponse MasterbedRoomWebresponse = (HttpWebResponse)MasterbedRoomrequest.GetResponse();
        Stream MasterbedRoomdataStream = MasterbedRoomWebresponse.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader readerMasterBedRoom = new StreamReader(MasterbedRoomdataStream);
        // Read the content.
        string responseFromServerMasterbedRoomdata = readerMasterBedRoom.ReadToEnd();
        // Display the content.
        //Console.WriteLine(responseFromServer);
        if (responseFromServerMasterbedRoomdata == "1")
        {
            MasterBedRoomLamp.Checked = true;
        }
        // Cleanup the streams and the response.
        readerMasterBedRoom.Close();
        MasterbedRoomdataStream.Close();
        MasterbedRoomWebresponse.Close();

我想在现代 UI 应用程序中做同样的事情。 从我在网上读到的内容来看...似乎推荐的方法是使用 HTTP 的异步功能? 当我将其放入现代 UI VS 模板之一并尝试编译时,上面的代码不起作用。

看过几个例子,但它们似乎都比我预期的要复杂。

问题。 完成上述任务最直接的方法是什么? 越短越好。

感谢您的帮助!

Win8 RT Metro 风格应用 HTTP 响应异步

它会有点不同。

public async Task<bool> IsLampOn(){
    string responseData = await GetDataFromUrl("http://10.10.1.100:3480/data_request?id=lu_variableget&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status&DeviceNum=7");
    return (responseData == "1")
}
public async Task<string> GetDataFromUrl(string url){
    HttpClient http = new HttpClient();
    HttpResponseMessage response = await(http.GetAsync(new Uri(url)));
    response.EnsureSuccessStatusCode();
    return await response.Content.ReadAsStringAsync();
}

从本质上讲,您只需致电

bool val = await IsLampOn();

使用 HttpClient 类。下面是一个简单的示例。 您可以避免使用 GetStringAsync 进行流工作。