【问题标题】:android send several parameter with retrofitandroid通过改造发送几个参数
【发布时间】:2018-06-03 13:35:05
【问题描述】:

我想通过改造向服务器发送几个参数,但每次我这样做都会出错。

错误标题: com.google.gson.stream.MalformedJsonException:使用 JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ 接受格式错误的 JSON

我不知道出了什么问题。 这是我的代码

java代码:

@FormUrlEncoded
@POST("rating.php")
Call<Message> addComment(@Field("app_id") String appId, @Field("user_id") String userId,@Field("comment_title") String comment,@Field("star") int star);

php代码:

  $message=array();
  $appId=$_POST["app_id"];
  $userId=$_POST["user_id"];
  $title=$_POST["comment_title"];
  $star=$_POST["star"];
  $message["message"]="ok";
  echo json_encode($message);

它是我的 Message.java:

public class Message {
@SerializedName("message")
public String message;

public String getMessage() {
    return message;
}

public void setMessage(String title) {
    this.message = title;
}

}

【问题讨论】:

  • 分享你的响应json和Message.java
  • 可以看到message.java
  • 你的 PHP 返回的是一个列表,而不是一个对象
  • 它返回一个像这样的对象:{"message":"ok"}

标签: android gson httprequest retrofit2


【解决方案1】:

更改您的 PHP 脚本以获得正确的 JSON 响应

  [{"message":"ok"}]

  <?php
  $appId=$_POST["app_id"];
  $userId=$_POST["user_id"];
  $title=$_POST["comment_title"];
  $star=$_POST["star"];
  $message["message"]="ok";

  header('Content-Type: application/json; Accept-Charset: utf-8; ');
  $response = array();
  array_push($response, $message);
  echo json_encode($response);
  ?>

【讨论】:

  • 消息是一个json对象,我不需要json数组
【解决方案2】:

对不起,我犯了一个错误,我向服务器发送了一个空变量,服务器不知道所以返回一个错误,谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2019-07-20
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多