【问题标题】:How is it possible to retrieve "String response" from php via retrofit in android?如何通过 android 中的改造从 php 中检索“字符串响应”?
【发布时间】:2020-03-23 03:47:34
【问题描述】:

我需要通过retrofit将我的android应用程序中的一些数据插入数据库,其界面部分如下所示:

@FormUrlEncoded
    @POST("*****")
    Call<model> insertChordReq(@FieldMap Map<String, String> fields);

retrofit 将数据从@POST 注释发送到php 文件。 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 中的现有问题。不幸的是,我没有找到确切的解决方案。

【问题讨论】:

    标签: php android json string retrofit2


    【解决方案1】:

    您必须对您的 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);
    

    【讨论】:

    • 它可以工作,但仍然没有返回String。但是,我能够以这种方式管理我想做的事情。谢谢你!它返回一个响应(不是失败),所以我可以使用条件来处理事件。 . .
    【解决方案2】:

    另外,我发现这个问题可以通过更改call&lt;type&gt; 来解决。使用Void 而不是model 返回响应(不是失败),这将有助于处理UI/UXonResponse 上的某些条件:

    @FormUrlEncoded
        @POST("*****")
        Call<Void> insertChordReq(@FieldMap Map<String, String> fields);
    

    【讨论】:

      猜你喜欢
      • 2018-06-13
      • 1970-01-01
      • 2017-10-10
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多