JSON-WepAPI-解析值时遇到意外字符

时间:2018-07-02 17:36:48

标签: json asp.net-web-api deserialization webservice-client

任何帮助将不胜感激

我有一个通用类,它促进WebAPI调用,它已经存在了很长时间,并且没有任何问题。今天,我遇到一个错误,不确定在哪里跟踪问题。确切的错误是

{"Unexpected character encountered while parsing value: [. Path 'PayLoad', line 1, position 12."}

通话结果是我要回去

"{\"PayLoad\":[\"file_upload_null20180629155922²AAGUWVP2XUezeM3CiEnSOw.pdf\"],\"Success\":true,\"Message\":\"1 File(s) Uploaded\",\"Exceptions\":[]}"

哪个看起来正确,是我从服务电话中得到的期望

这是我所说的突然退出工作的方法,它在最后一行失败

        public static TR WebApiPost(string serveraddress, string endpoint, object data)
    {

        HttpResponseMessage msg;
        var clienthandler = new HttpClientHandler
        {
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(user, password, domain)
        };

        using (var client = new HttpClient(clienthandler) { BaseAddress = new Uri(serveraddress) })
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            msg = client.PostAsync(endpoint, new StringContent(new JavaScriptSerializer().Serialize(data), Encoding.UTF8, "application/json")).Result;
        }

        var result = msg.Content.ReadAsStringAsync().Result;
        return JsonConvert.DeserializeObject<TR>(result);
    }

最后是真正拨打电话的那一行(没关系)

returned = CallHelper<ResultStatus<string>>.WebApiPost(serviceurl, sendFileUrl, model);

1 个答案:

答案 0 :(得分:0)

尚不清楚您的Web服务从何处获取PayLoad的值,因此该值很可能在其开始处具有字节顺序标记(BOM)。如果要返回最初是Unicode编码文件的内容,则尤其如此。 请注意,在调试器中查看字符串时,物料清单不可见。

在您的Web服务上,请确保您未返回PayLoad值的BOM。在字符串开头检查此字节序列:

0xEF,0xBB,0xBF

有关字节顺序标记的更多信息: https://en.wikipedia.org/wiki/Byte_order_mark