【问题标题】:parsing base64 to server returns null in Json when using JsonConvert.SerializeObject();使用 JsonConvert.SerializeObject() 时,解析 base64 到服务器在 Json 中返回 null;
【发布时间】:2018-07-18 18:52:30
【问题描述】:

所以我很高兴使用 FormUrlEncodedContent(); 将数据解析到我的服务器;当我决定添加一个使用 Base64 转换为字符串的图像时,收到一条错误消息,指出 URL 太长。在研究中,我将其更改为 JsonConvert.SerializeObject();但在我的代码中,Json 现在返回 null。有人可以看看我的代码并建议我应该做什么吗?我确实尝试用对象替换 IEnumerable 但得到了同样的错误 该过程通过,但服务器上的所有数据均为空。

json错误如下: [0:] Newtonsoft.Json.JsonReaderException: 解析值时遇到意外字符: M. Path '', line 0, position 0。 在 Newtonsoft.Json.JsonTextReader.ParseValue () [0x002b3] in :0 在 Newtonsoft.Json.JsonTextReader.Read () [0x0004c] in :0 在 Newtonsoft.Json.JsonReader.ReadAndMoveToContent () [0x00000] 在:0 在 Newtonsoft.Json.JsonReader.ReadForType (Newtonsoft.Json.Serialization.JsonContract 合同,System.Boolean hasConverter)[0x0004a] 在:0 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x000db] in :0 在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader 阅读器,System.Type objectType)[0x00054] 中:0 在 Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in :0 在 Newtonsoft.Json.JsonConvert.DeserializeObject(System.String 值,System.Type 类型,Newtonsoft.Json.JsonSerializerSettings 设置)[0x0002d] 中:0 在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](System.String 值,Newtonsoft.Json.JsonSerializerSettings 设置)[0x00000] 中:0 在 Newtonsoft.Json.JsonConvert.DeserializeObject[T] (System.String value) [0x00000] in :0

 IEnumerable<KeyValuePair<string, string>> queries = new 
List<KeyValuePair<string, string>>()
        {                   
                  new KeyValuePair<string, string>("widget1", Widget1),
                  new KeyValuePair<string, string>("widget2", Widget2),
                  new KeyValuePair<string, string>("widget3", 
Widget3),
                  new KeyValuePair<string, string>("widget4", Widget4),
                  new KeyValuePair<string, string>("widget5", Widget5),
                  new KeyValuePair<string, string>("encoding_string", 
encoding_string)                 
    };


        var jsonString = JsonConvert.SerializeObject(queries);       
        //HttpContent q = new FormUrlEncodedContent(queries);
       HttpContent q = new StringContent(jsonString, Encoding.UTF8, 
"application/json");

        using (HttpClient client = new HttpClient())
        {
            using (HttpResponseMessage response = await client.PostAsync(url, 
q))
            {
                using (HttpContent content = response.Content)
                {

                    string mycontent = await content.ReadAsStringAsync();
                   Console.WriteLine("mycontent1 " + mycontent);



            }

        }
    }
}

Json 字符串如下我已经缩短了图像,因为它对帖子太长了

jsonString [{"Key":"widget1","Value":"54"},{"Key":"widget2","Value":"test"},{"Key":"widget3", "Value":"test"},{"Key":"widget4","Value":"100"},{"Key":"widget5","Value":"3"},{"Key": “encoding_string”, “值”:“/ 9J / 4UpuRXhpZgAASUkqAAgAAAANAA8BAgAIAAAAqgAAAAEBBAABAAAAqAcAABIBAwABAAAAAQAAADIBAgAUAAAAsgAAACWIBAABAAAAcgMAABsBBQABAAAAxgAAABoBBQABAAAAzgAAAAABBAABAAAAwA8AABABAgAJAAAA1gAAADEBAgAOAAAA3wAAABMCAwABAAAAAQAAAGmHBAABAAAA7QAAACgBAwABAAAAAgAAAFEEAABzYW1zdW5nADIwMTg6MDc6MTcgMTQ6MTY6NDgASAAAAAEAAABIAAAAAQAAAFNNLUc5NTVGAEc5NTVGWFhVMkNSRjcAIAAAkAcABAAAADAyMjADh6cTKkjEJT22IPaTTeYZZUFrkHKU / wDVQUoUogkd4h3aGZftQXlmtxZCSeuHsV4qc0bgVykrRyJGWjXsjWFaRpgXSR37KzAhmYOfSaG1VrLf / BiNWK0hq9o + 9W7zdhUpGAXLeozElOx4PA + I4Vchk7zTRfiRwR471 / SSnyVtNULS2RKXEUiK8XWtG5KEkv0CEqfotn8tSrZkTU4ob9d47EFeeb00E9aBRDWdUIkMZjDCb03PZDwhA5POWC5KlGrgUN3 / AONzYWDDUO0dkshKESk90JSX7poAUMApDJBrYupdSCcqlRH + OxH81n6kWUvmtrS3a0uXy1wJWjmpQ + oZsarli8NjKTirBFMyiMRGZ5EQiMSRpkdsSxtUmT120JsW06Q4VZZZZXlrpJFGLkIkSu8UFKjV / j2JjjM1e9FJGwkqv2fmfvwy4fMe vEFkhx8VKgmOM7SWmny1WCVJa8pdbV + 1SsW4vWjkr1YoY4O8RaL + 7D + Aw9ST + RmyksdI2MRk6mLLh + KatUkXGVjJAHkjkhyCxsWkjdxCCHMjKXkiWo5gEiuYkqLg0Zg + gDHztYCuhKe + pRUTlACS2U1NWGpcAk1AA6FD2OWSfJTxTTPIlp / zZppHMzySyzGR4Szlp Io2nLTtEjRwD1 / ZB2flKysckOuZ + aeo9ehTlw9aW0saSD8m9k6kX5JkPdAymetCYuHCJaDsVBP0Zy8U3qTzyBksxzn4hkZJYSYYpFbpxw8csyuD2KtGAfYIfo /米+ 8OInweSlZkGC1fYICUcxlNgS5k5eR2aKaZsedVBCjtGytGyL15aNJ7ylElq13Oj + 384ncASkpAJJFLFgUkqA5UvSvhEL5XIVOi0zLKLckRkihePoJKisIo5kkAUSM83qggKo4QEc8n6Q55oaVSKHITxwvJWjT8DHgRWppkqlVuXFdWFNZ3eJrrhFe0Q5gjBReFjM1orAhswiR0pJ6MazSduIAxeaJACekXrzsVCgjnlmJJPZiZOeww9WwsliRIHjBdAOyoCISwUdpWiQhIzzyQq88f5ESS7mhIox08Pvzi6hiG5hxzpYmgdvCNKC3pshZOP95pMNnq3UuwqLFJjpJHtWUUcCOsYRMbD8mNe6ktHJLG7L3ZblixWTX5ESpHNhck3XtELCFIZZY0ThUKyRSz9Y5APTfoDx8h9SfoKZGLD5azPQRZc / lJMI0OQC / j2tToW8X / KWUmjb1ale1nLmv0J5ZVgjBc1bHdLcaPHiVC6zPKJjKYhI7yKpeJmZCJJmZgFR1kVolLLwjqFCqV + oyjukVZRdjSlHYaONgNH1idCmmH5SEAC9S13Ggdw / KEmy5i22nnK0U1aGW8GkgiSITR46ex0mVWeY9FWq8i905IjMgAZ +的py / kMhXuV5cwrWIBe9a5kjZVoJclYjnWWDGwTorrKvrsk8rRM / ourSgK9fujbsyellaio8rKIZYiiklDDKIY + W4JD / 5sYgG / wA1Vf0APofN3J / xMTrVuI / g46GSPGxLIHiW4l3KSWLCRAuY7As3MiyuyxPJVkhALxRQP9QOACztmtepYHnY6XItrE5S5QaEkM9u6CC1i5s3MP0O5OS7lqOIs309LP0vzMpTaNmgapHk7j / iMldO0cUMtDGQ2 wqkl4r0dhmMrK4Z0GfyGSyGQ + FIacH49GNDXsE + nWViEJatG54bgsXJHBABe / U + w69nzVoWoXWranjimuVa9ucBh0JZ5UKsSqqDynB6jkEcg / fX31xMr5R70EellCLZUtWmUN8srRoV5N + 2PIWq6WJ63a1bkjsSxVYopJVrooj7lOEJAABJT9AD2AA + njrWUs5KCWS0sLenLkIVVI + iFYJOkbMFYEv1ZgW59 + F1 + vr76 ++ mTYnVlV8ExDMSkS0kJSDUOAAW7lHaP / 2Q ==“}] P>

【问题讨论】:

  • 您是否尝试在 URI 上通过 HTTP 传递 base_64 编码字符串?挂断“网址太长”位。
  • 是的,但另一篇文章说使用 JsonConvert.SerializeObject(queries);解决这个问题,但是当我使用这个时我的所有变量都是空的
  • 听起来您正在尝试传输没有 URL 编码的 base64 数据。 base64 编码中的 += 将无法在 URL 上传输。 JSON 字符串不一定是 URL 安全的。看看 HttpUtility.UrlEncode?你可以发布这个吗?
  • 感谢您的输入,但我认为我使用以下代码将 base64 转换为字符串,还是我误解了? var bytes = new byte[stream.Length];等待 stream.ReadAsync(bytes, 0, (int)stream.Length); base64 = System.Convert.ToBase64String(bytes);文件.Dispose();
  • 该 JSON 是有效的,但在 {"Key":"widget4,"Value":"100"}... 上缺少引号,应该是:{"Key":"widget4","Value":"100"}。通过该更正,它通过了 linter。假设您没有操作字符串...可能是双重编码问题?网络助手?所有这些都想到了,但不确定它是否合适。

标签: c# php .net xamarin base64


【解决方案1】:

事实证明,一旦确认我的代码是正确的,我就更深入地查看了我的 PHP 代码,并且我使用的是 POST 而不是 json_decode,一旦我实现了这一切,它就开始工作了,感谢大家的帮助,确认没有任何问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多