【问题标题】:Sending in JSON info but I recieve this error: Error reading JObject from JsonReader. Path '', line 3, position 1发送 JSON 信息但我收到此错误:从 JsonReader 读取 JObject 时出错。路径'',第 3 行,位置 1
【发布时间】:2016-06-23 20:53:34
【问题描述】:

从 JsonReader 读取 JObject 时出错。路径'',第 3 行,位置 1。

知道为什么会这样吗?当我使用完全相同的代码并将其发送到解析(例如)时它可以工作,但是当我尝试将它发送到我自己的域时它不起作用。这个后端有关系吗?

static public async Task<JObject> signupUser(string username, string password)
    {
        var httpClientRequest = new HttpClient ();

        var postData = new Dictionary <string, string> ();

        postData.Add ("username", username);
        postData.Add ("password", password);

        var jsonRequest = JsonConvert.SerializeObject(postData);

        HttpContent content = new StringContent(jsonRequest, System.Text.Encoding.UTF8, "application/json");

        var result = await httpClientRequest.PostAsync("http://myadress.com/_put.php", content);
        var resultString = await result.Content.ReadAsStringAsync ();
        System.Diagnostics.Debug.WriteLine (resultString);
        var jsonResult = JObject.Parse (resultString);

        return  jsonResult;
        System.Diagnostics.Debug.WriteLine (jsonResult);

    }

我的后端代码:

<?php 

 $value = json_decode(file_get_contents('php://input'));

 $mysql_pekare= new mysqli ("serv", "user","pass", "db");

 if(!empty($value)) {

 $stmt = $mysql_pekare->prepare("INSERT INTO users (`username`, `password`) VALUES(?,?)");
 $stmt->bind_param("ss", $value->username, $value->password);
 $stmt->execute();


 $stmt->close();

 $mysql_pekare->close();
 }


 ?>

【问题讨论】:

  • 那么resultString中有什么?
  • 秒在我的日志中运行它
  • 当我在日志中运行它时,它内部似乎“什么都没有”,或者它在有机会在日志中给出结果之前就崩溃了。 var jsonResult = JObject.Parse (resultString);是使整个事情崩溃的代码
  • 嗯,是的,您似乎没有记录 resultString... 为什么不直接在调试器中运行代码,然后看看呢?
  • 我刚刚添加了它。 System.Diagnostics.Debug.WriteLine (resultString);如果这就是你的意思。

标签: c# json xamarin xamarin.forms


【解决方案1】:

您的后端 (php) 代码似乎没有输出任何内容(可能除了一些空格)。所以难怪 JObject 不能解析它:它不是 json。

【讨论】:

  • 好的。是的,这似乎是问题所在。你认为我应该如何命名我的下一篇文章以更深入地了解如何解决它? “如何调整这个 PHP 后端代码,以便可以解析我发送的 JObject?”这行得通吗?
  • 我会使用 JSON 而不是 JObjects。但真正的问题是,你想从 php 后端向 c# 前端发送什么信息?
  • 上传用户名 + 密码后,我想获取 objectId/userId(我现在在后端作为 AI(auto_increment 所以它手动给我一个唯一的 ID)+ sessionToken(即我还没有做)作为回报。
  • 所以当我运行 System.Diagnostics.Debug.WriteLine (jsonResult);在日志中,我将获得 objectId + sessionToken。然而,我非常不确定我现在应该如何执行它。
  • 作为测试,您可以尝试从后端返回/回显有效的 JSON 字符串。像“{ objectID: 123: sessionId: 'foobar' }”
猜你喜欢
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多