使用Xamarin Azure移动服务组件1.1.0的InvokeApiAsync方法“解析值时出现意外错误”

时间:2013-12-02 13:12:28

标签: azure xamarin.android xamarin azure-mobile-services

我试图使用Xamarin Azure Mobile Services Component 1.1.0的“InvokeApiAsync”方法,如下所述:

var result = await _nativeClient.InvokeApiAsync ("insertsample", HttpMethod.Post, null);

我得到一个例外说:

  {Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing                value: O. Path '', line 0, position 0.
at Newtonsoft.Json.JsonTextReader.ParseValue () [0x00000] in <filename unknown>:0 
at Newtonsoft.Json.JsonTextReader.ReadInternal () [0x00000] in <filename unknown>:0 
at Newtonsoft.Json.JsonTextReader.Read () [0x00000] in <filename unknown>:0 
at Newtonsoft.Json.Linq.JToken.ReadFrom (Newtonsoft.Json.JsonReader reader) [0x00000] in <filename unknown>:0 
at Newtonsoft.Json.Linq.JToken.Load (Newtonsoft.Json.JsonReader reader) [0x00000] in <filename unknown>:0 
at Newtonsoft.Json.Linq.JToken.Parse (System.String json) [0x00000] in <filename unknown>:0 
at Microsoft.WindowsAzure.MobileServices.StringExtensions.ParseToJToken (System.String response) [0x00000] in <filename unknown>:0 
at Microsoft.WindowsAzure.MobileServices.MobileServiceClient+<InvokeApiAsync>d__6.MoveNext () [0x00000] in <filename unknown>:0 

有关如何解决此问题的任何指示?

提前致谢!

2 个答案:

答案 0 :(得分:1)

InvokeApiSync的默认重载需要JSON响应。听起来你没有回来。试试这个:

exports.post = function(request, response) {
    response.send(200, {}); // note the empty JSON object
}

或者,如果您不希望返回JSON,则可以使用不同的InvokeApiAsync重载来返回HttpResponseMessage,然后根据需要解析响应。

答案 1 :(得分:0)

在返回从文件中读取的JSON时,我遇到了类似的问题。它存储为UTF-8,但也有BOM(0xEF,0xBB,0xBF)。 JSON.NET并不期望它,因此您会收到“意外字符”错误。

确保剥离BOM(如果存在)。