android - 预期为 BEGIN_OBJECT,但在第 3 行第 1 列路径 $
问题描述
我正在尝试通过改造将字符串类型列表发送到 mysql 数据库。当我尝试使用邮递员时,我得到了成功,但我收到了来自 android studio 的错误消息。
我的 API 接口:
@FormUrlEncoded
@POST("yesilegeservices/insertJob.php")
fun insertJob (@Field("Token") token:String,
@Field("StartingDate") StartingDate:String,
@Field("TargetTime") TargetTime:String,
@Field("JobContent") JobContent:String,
@Field("StaffList[]") StaffList:List<String>, // My List
@Field("ReleaseDate") ReleaseDate:String,
@Field("KindId") kindId:String):Single<JobInsertResponse>
我的响应数据类:
data class JobInsertResponse(
@SerializedName("job") @Expose val incomingId:List<singleUuid>,
@SerializedName("jobInsertSuccess") val success:Int
)
data class singleUuid (
@SerializedName("JobId") @Expose val uuid:Int
)
php响应:
{"job":[{"JobId":"15"}],"jobInsertSuccess":1}
Android工作室错误信息:
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was
STRING at line 3
column 1 path $
OkHttp 日志:
2021-07-02 15:49:31.350 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: --> POST
http://10.0.2.2:8888/yesilegeservices/insertJob.php
2021-07-02 15:49:31.350 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Content-Type: application/x-www-form-
urlencoded
2021-07-02 15:49:31.351 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Content-Length: 211
2021-07-02 15:49:31.352 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient:
Token=yN4XGdFIzIMOrgE3Q4rB1jqoNJUbpfOqHI3IuuiUU&StartingDate=02-
07-
2021&TargetTime=15.49&JobContent=lorem%20impsun%20dolor&
StaffList%5B%5D=10&StaffList%5B%5D=11&StaffList%5B%5D=12
&ReleaseDate=02-07-2021&KindId=1
2021-07-02 15:49:31.352 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: --> END POST (211-byte body)
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: <-- 200 OK
http://10.0.2.2:8888/yesilegeservices/insertJob.php (28ms)
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Date: Fri, 02 Jul 2021 12:49:39 GMT
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Server: Apache/2.4.46 (Unix)
OpenSSL/1.0.2u PHP/8.0.0 mod_wsgi/3.5 Python/2.7.13
mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11
Perl/v5.30.1
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: X-Powered-By: PHP/8.0.0
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Content-Length: 98
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Keep-Alive: timeout=5, max=100
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Connection: Keep-Alive
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Content-Type: text/html; charset=UTF-8
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient:
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient:
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: Incorrect date value: '02-07-2021' for
column 'ReleaseDate' at row 1
2021-07-02 15:49:31.381 16777-16916/com.thic.yesilege
I/okhttp.OkHttpClient: <-- END HTTP (98-byte body)
我认为问题出在我发布的列表中,因为如果我删除列表,结果是成功的。
怎么了 ?
解决方案
我认为问题出在您的数据类中。您的作业数组列表包含对象,并且在对象内部有一个 jobId 字符串,但您将其解析为整数。
试试这个解决方案,它可能会有所帮助。
data class JobInsertResponse(
@SerializedName("job") @Expose val incomingId:List<singleUuid>,
@SerializedName("jobInsertSuccess") val success:Int
)
data class singleUuid (
@SerializedName("JobId") @Expose val uuid:String
)
推荐阅读
- python - 从列标题中删除整数列表键
- java - 如何获取在 SSL/TLS 握手期间建立的对称密钥(会话密钥)以加密/解密消息?
- javascript - 渲染后超链接的点击功能不可用
- html - 我如何使用(css和html)使用任何代码将pdf输入html
- spring-boot - Apache druid 通过本机查询和 Spring 启动进行分页
- salesforce - SalesForce - 如何使用汇总公式计算一个日期是否在另一个日期之前?
- reactjs - 如何在 reactjs 上实现 zkteco 指纹扫描仪
- python-3.x - Python 脚本未按预期打印输出
- html - 在文本前面添加字符(使用 CSS)
- nginx - 具有 https 授权的 nginx 上游服务器