在 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 字符串的主要内容,如果未能解决你的问题,请参考以下文章