发布JSON的简单Windows 8 C#Web请求

本文关键字:C#Web 请求 Windows 简单 JSON 发布 | 更新日期: 2024-09-19 11:21:18

我正在尝试编写一个包含异步函数的类,以使对特定api的Web请求更加简单。为了给你一个我的目标的例子,我希望能够编写如下代码:

private void btnLogin_Click(object sender, RoutedEventArgs e)
    {
        // Validate Login Details...
        // Save login details to xml file if user asks...
        JsonObject authSuccess = await myClass.authenticate(username, password); // NOTE JSON WILL BE THE RESPONSE FROM SERVER SO JSONOBJECT SEEMS LOGICAL BUT MAY BE EASIER WAY?
        if (authSuccess){
          // Go to next part of app...
        }else{
          // Show error
        }
    }
private void btnDelete_Click(object sender, RoutedEventArgs e)
    {
        JsonObject deleteSuccess= await myClass.deleteSomeData(type, data); // NOTE JSON WILL BE THE RESPONSE FROM SERVER SO JSONOBJECT SEEMS LOGICAL BUT MAY BE EASIER WAY?
        if (deleteSuccess){
          // Go to next part of app...
        }else{
          // Show error
        }
    }

myClass看起来像:

namespace myApp
{
    public class myClass 
    {
        public async Task<Boolean> authenticate(String username, String apikey)
        {
            var resp = await PostAsync("http://url", "{'"auth'":{'"passwordCredentials'":{'"username'":'"demouser'",'"password'":'"mypass'"}}}");
            return true;
        }
public async Task<Boolean> deleteSomeData(String type, String data)
        {
            var resp = await PostAsync("http://url", "{'"delete'":{'"type'":{'"type'":'"type'",'"data'":'"data'"}}}");
            return true;
        }
        private async Task<JsonObject> PostAsync(string uri, string data)
        {
            JsonSerializer js = new JsonSerializer();
            var httpClient = new HttpClient();
            var response = await httpClient.PostAsync(uri, new JsonObject());
            response.EnsureSuccessStatusCode();
            string content = await response.Content.ReadAsStringAsync();
            return await Task.Run(() => JsonObject.Parse(content));
        }
    }
}

我想知道是否有一种简单的方法可以做到这一点?我需要能够从应用程序中的任何地方调用该类,以便使用PUT、GET、POST、DELETE发送JSON数据与服务器通信,并能够发送自定义标头和设置自己的内容类型。

我总是需要能够从服务器读取响应并将其解析为json或xml。

有人帮忙吗?

ps。上面的许多代码可能是错误的。

发布JSON的简单Windows 8 C#Web请求

我通过使用一组扩展方法实现了这一点;沿着的路线

    public static bool UpdateItem<TItem>(this HttpClient httpClient, TItem item, string uriBase, string actionName) where TItem : class
    {
        var response = await httpClient.PutAsJsonAsync(string.Format(uriBase, actionName), item);
        response.EnsureSuccessStatusCode();
        .
        .
        .
        return success;
    }