如何通过 android 中的改造从 php 中检索“字符串响应”?

我需要通过 将我的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 中搜索了现有的问题。不幸的是,我没有找到确切的解决方案。


白猪掌柜的
浏览 120回答 2
2回答

largeQ

您必须对您的 PHP 文件以及 android 接收器部分进行一些修改,如下所示。echo 只是从 php 文件中输出字符串,但您的改造模块需要一个 json 发射。添加JSON_UNESCAPED_UNICODE以支持非英语支持。您还应该考虑在改造 API 接口中保持相同的 json 格式。在这里我添加了字符串作为相同的响应格式,在你方便的时候改变它....已编辑&nbsp;echo json_encode('درخواست شما با موفقیت ثبت گردید',JSON_UNESCAPED_UNICODE);在你的安卓代码中@FormUrlEncoded&nbsp; &nbsp; @POST("*****")&nbsp; &nbsp; Call<String> insertChordReq(@FieldMap Map<String, String> fields);

Qyouu

另外,我发现这个问题可以通过更改call<type>.&nbsp;使用Void而不是model返回响应(不是失败),这将有助于处理以下UI/UX条件onResponse:@FormUrlEncoded &nbsp;&nbsp;&nbsp;&nbsp;@POST("*****") &nbsp;&nbsp;&nbsp;&nbsp;Call<Void>&nbsp;insertChordReq(@FieldMap&nbsp;Map<String,&nbsp;String>&nbsp;fields);
打开App,查看更多内容
随时随地看视频慕课网APP