【问题标题】:Post json to xamarin webclient api将 json 发布到 xamarin webclient api
【发布时间】:2014-09-11 16:07:42
【问题描述】:

我想将一个 jsonobject 发布到我的 webapi。使用普通的 C# 代码,我会在我的 httpClient 对象上使用 PostAsJsonAsync。但这似乎不受 xamarin 支持。所以我的问题是如何使用 xamarin webclient 或 webrequest 将 json 发布到我的 api?

这是我现在返回 null 的代码...

   protected async override void OnResume()
    {
        base.OnResume();

        var clientRequest = new ResourceByNameRequest
            {
                Name = "G60",
                UserId = "1"
            };
        HttpContent myContent = new StringContent(clientRequest.ToString());
        try
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("XXX");
                var cancellationToken = new CancellationToken();
                var response = client.PostAsync("/api/Resource/ResourceByName", myContent, cancellationToken).Result;
                var result = await response.Content.ReadAsStreamAsync();
                //return result;

            }
        }
        catch (Exception)
        {

            throw;
        }
    }

【问题讨论】:

    标签: c# android json asp.net-web-api xamarin


    【解决方案1】:

    试试这样的:

    using System.Runtime.Serialization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    //...
    
    protected override void OnResume()
    {
    
    var request = HttpWebRequest.Create("Your_URL_XXX");
    request.ContentType = "application/json";
    request.Method = "POST";
    
    
    var clientRequest = new ResourceByNameRequest
    {
        Name = "G60",
        UserId = "1"
    };
    
    using (var writer = new StreamWriter(request.GetRequestStream()))
    {
        writer.Write(clientRequest.ToString());
    }
    
    try
    {
        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    {
    
    string error = "";
    if (response.StatusCode != HttpStatusCode.OK)
    error = string.Format("Error fetching data. Server returned status code: {0} | Description: {1}", response.StatusCode, response.StatusDescription);
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    
    {
        var content = reader.ReadToEnd();
        if (string.IsNullOrWhiteSpace(content))
        {
            strResponse = "Response contained empty body...";
        }
        else
        {
            var cont = JObject.Parse(content);
            YOUR_OBJECT_RESPONSE.PROP1 = cont["Prop1"].NullSafeToString();
            YOUR_OBJECT_RESPONSE.PROP2 = cont["Prop2"].NullSafeToString();
            //...
    
        }
    }
    }
    } 
        catch (WebException wex)
        {
        var pageContent = new   StreamReader(wex.Response.GetResponseStream()).ReadToEnd();   
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      • 2020-11-06
      • 2021-12-16
      • 1970-01-01
      • 2014-03-11
      • 2019-06-03
      相关资源
      最近更新 更多