在 Xamarin 中发布 Json 字符串

Posted

技术标签:

【中文标题】在 Xamarin 中发布 Json 字符串【英文标题】:Post a Json string in Xamarin 【发布时间】:2019-04-23 12:41:28 【问题描述】:

在我的应用程序中,我以这种方式将 json 字符串发布到服务器:

string url = "my/url";
        HttpClient newClient = new HttpClient();

        string contentType = "application/json";
        JObject json = new JObject
        
             "id", "id" ,
             "apiKey", "apiKey" ,
             "EncryptedData", Data 
        ;

        var jon = JsonConvert.SerializeObject(json);
        var content = new StringContent(jon, Encoding.UTF8, contentType);
        var TaskPostAsync = await newClient.PostAsync(url, content);


        if (TaskPostAsync.IsSuccessStatusCode)
        
            var contentString = await TaskPostAsync.Content.ReadAsStringAsync();

我得到的响应是它不是 Json 格式。我哪里错了。任何帮助将非常感激。 数据是一个字符串。

【问题讨论】:

你能得到你的服务器收到的东西吗? 【参考方案1】:

通过调用

 var jon = JsonConvert.SerializeObject(json);

你正在序列化它两次。

JObject 已经是 JSON,所以您需要做的就是调用 .ToString 来获取 JSON

//...

JObject json = new JObject

     "id", "id" ,
     "apiKey", "apiKey" ,
     "EncryptedData", Data 
;

var content = new StringContent(json.ToString(), Encoding.UTF8, contentType);

//...

参考Write JSON text with JToken.ToString

另一种选择是使用匿名对象,然后对其进行序列化

//...

var model = new 
    id = "id",
    apiKey = "apiKey",
    encryptedData = Data
;

var json = JsonConvert.SerializeObject(model);
var content = new StringContent(json, Encoding.UTF8, contentType);

//...

【讨论】:

试过了,还是不行。我不知道出了什么问题。 "hasError": true, "error": "code": 601, "developer_message": "input not is JSON format", "user_message": "显示给用户的错误信息" 这是服务器返回的内容。如果 hasError 为 false,我会从服务器取回 encryptedData。

以上是关于在 Xamarin 中发布 Json 字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Xamarin.forms pcl 中的 Url 检索 json 字符串

如何从 Xamarin.forms pcl 中的 Url 检索 json 字符串

json 字符串不适合我使用 Xamarin 制作的课程

提取 JSON 数据 Xamarin

使用 xamarin android 解析 json

如何序列化两个参数Json转换?