我需要通过 将我的android应用程序中的一些数据插入数据库retrofit,其界面部分如下所示:@FormUrlEncoded @POST("*****") Call<model> insertChordReq(@FieldMap Map<String, String> fields);将数据从注释retrofit发送到php文件。代码如下@POST:php<?php$sN = $_REQUEST['sN'];$siN = $_REQUEST['siN'];$soT = $_REQUEST['soT'];try { $connection = new PDO("mysql:host=******;dbname=*******", "******", "******"); $connection->exec('set names utf8'); $insertQuery = "INSERT INTO table (sN, siN, soT) VALUES ('$sN', '$siN', '$soT')"; if ($connection->exec($insertQuery)){ echo 'درخواست شما با موفقیت ثبت گردید'; }else{ echo 'error'; }} catch (PDOException $e) { echo $e;}然后我想echo 'درخواست شما با موفقیت ثبت گردید';在我的应用程序中显示字符串响应;但问题是改造不会将其作为响应返回。相反,我通过以下方式收到错误onFailure:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $不得不提的是,插入数据库的过程已经成功完成,但我需要得到指定的响应。有没有办法通过改造得到字符串?有没有办法把字符串变成json,然后通过改造得到它?我已经在 stackOverFlow 中搜索了现有的问题。不幸的是,我没有找到确切的解决方案。
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
您必须对您的 PHP 文件以及 android 接收器部分进行一些修改,如下所示。echo 只是从 php 文件中输出字符串,但您的改造模块需要一个 json 发射。添加JSON_UNESCAPED_UNICODE以支持非英语支持。您还应该考虑在改造 API 接口中保持相同的 json 格式。在这里我添加了字符串作为相同的响应格式,在你方便的时候改变它....
已编辑
echo json_encode('درخواست شما با موفقیت ثبت گردید',JSON_UNESCAPED_UNICODE);
在你的安卓代码中
@FormUrlEncoded
@POST("*****")
Call<String> insertChordReq(@FieldMap Map<String, String> fields);
Qyouu
TA贡献1786条经验 获得超11个赞
另外,我发现这个问题可以通过更改call<type>
. 使用Void
而不是model
返回响应(不是失败),这将有助于处理以下UI/UX
条件onResponse
:
@FormUrlEncoded @POST("*****") Call<Void> insertChordReq(@FieldMap Map<String, String> fields);
- 2 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消