无法在 Android 中显示来自 Php 文件的结果
Posted
技术标签:
【中文标题】无法在 Android 中显示来自 Php 文件的结果【英文标题】:Cannot show the result from Php file in Android 【发布时间】:2019-11-30 09:43:08 【问题描述】:我在从 php 文件中获取值并将其显示为 Toast 消息时遇到问题。
我得到的结果值为“null”。
我该如何解决?
这是我的 php 代码。
...
$x = (array('Result' => "Successful"));
echo json_encode($x,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
...
安卓代码
x.enqueue(new Callback<Result>()
@Override
public void onResponse(Call<Result> call, Response<Result> response)
if(response.isSuccessful())
Result result = response.body();
String message = result.getResult();
Log.i(LOG,"gonder() | onResponse : " + message);
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_SHORT).show();
@Override
public void onFailure(Call<Result> call, Throwable t)
);
【问题讨论】:
您的回复是否打印出您需要的值? @Lakhwinder Singh 不,它不显示“成功”,它只显示“空”。 我问的是 Retrofit 的日志拦截器,它会根据需要打印您的请求和响应吗?显然在 logcat 中 用一些 REST 工具,比如邮递员,检查服务器是否首先正确响应 @Lakhwinder Singh 改造部分没有问题。我从 json_encode 得到空值 【参考方案1】:在 php 中使用 json_encode
$x = (array('Result' => "Successful"));
echo json_encode($x,JSON_UNESCAPED_UNICODE);
在 android 中,在将响应消息显示为 Toast 消息之前,您可以检查是否收到了成功消息。
喜欢。
call.enqueue(new Callback<Result>()
@Override
public void onResponse(Call<Result> call, Response<Result> response)
if(response.body().getResult().equals("Successful"))
// add your code here to showing messawge as a Toast.
else
// display error
@Override
public void onFailure(Call<Result> call, Throwable t) //display errror message
);
【讨论】:
通常情况下,响应消息有一个名为“Successful”的值,但它显示“null”值。 在 php 中,您将获得正确 json 格式的响应。我认为您需要检查android代码。【参考方案2】:我的回答,
我将变量更改为“结果”而不是定义“结果”,我解决了这个问题。
$x = (array('result' => "Successful"));
echo json_encode($x,JSON_UNESCAPED_UNICODE);
【讨论】:
以上是关于无法在 Android 中显示来自 Php 文件的结果的主要内容,如果未能解决你的问题,请参考以下文章
在基于 Android 和 iOS 的智能手机上显示来自 EMBED HTML 标记的 PDF 文件失败
从 Android Emulator 向 localhost 发送文件 - 来自 localhost / PHP 文件问题的 301 错误响应