Volley 字符串请求返回一个空响应

Posted

技术标签:

【中文标题】Volley 字符串请求返回一个空响应【英文标题】:Volley String Request returning an empty response 【发布时间】:2022-01-10 08:11:45 【问题描述】:

我使用 php 制作了一个 REST api,然后我将它托管在托管程序中,您可以访问该 api here(它只包含一个 json 数据)。在我的浏览器中,我能够获取 json 数据。但在 android studio 中,响应返回一个空字符串。

这是api的内容

"FurnitureID":"4","Name":"Caesar Chair","Description":"It is part of the Fiber chair family. The armchair has a smooth, curved shell covered in a bio-composite material which includes 25% wood fibers. The other side of chairs, one with a tube base and one with a wood base. It is both simple and elegant, with gentle curves and a lightweight appearance. Any of these would make great contemporary dining chairs for minimalist and classy settings.","AR_Object":"modern.glb","Image":"modern_chair.jpg","Price":"2,500.00","Category":"chair","isFavorite":false

这就是logcat的意思

2021-12-04 12:25:01.714 1273-1448/com.example.ar_furniture D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true
2021-12-04 12:25:01.718 1273-1448/com.example.ar_furniture I/DpmTcmClient: RegisterTcmMonitor from: $Proxy0
2021-12-04 12:25:02.443 1273-1448/com.example.ar_furniture E/Volley: [10014] NetworkUtility.shouldRetryException: Unexpected response code 503 for https://ar-furniture-cf.preview-domain.com/ar-furniture-server/furnitures/getFurnitureDetails/4/1
2021-12-04 12:25:04.376 1273-1419/com.example.ar_furniture V/FA: Inactivity, disconnecting from the service

这是我的安卓工作室代码

Volley.newRequestQueue(this).add(new StringRequest(
            Request.Method.GET,
            "https://ar-furniture-cf.preview-domain.com/ar-furniture-server/furnitures/getFurnitureDetails/4/1",
            res -> 
                Toast.makeText(this, res, Toast.LENGTH_LONG).show();
            ,
            error -> 
                Toast.makeText(this, error.getMessage(), Toast.LENGTH_LONG).show();
            
        ));

我在 php 中的代码只是使用 PDO 获取普通数据

我不知道问题是否出在托管程序上。因为我尝试免费将它托管在 000webhost 中,所以它在我的 android 中运行。然后我在托管商中支付了单一托管计划,因为我在学校需要它。

顺便说一下我用mysql做数据库

【问题讨论】:

我认为问题在于 cloudflare 进行了验证,因此您将获得该状态代码,您可以在 support.cloudflare.com/hc/en-us/articles/… 阅读更多内容,您可以暂时禁用 cloudflare,或者您可以通过阅读该文章来修复它跨度> 【参考方案1】:

由于响应是一个 JSON 对象,你必须像这样转换它

 try
      JSONObject obj = new JSONObject(response);
     
catch (JSONException | NumberFormatException e) 
      e.printStackTrace();
    

然后像key一样得到结果

Log.d("FurnitureID: ", obj.getString("FurnitureID"));
Log.d("Name: ", obj.getString("Name"));

这是一个完整示例的link。你也可以检查一下。

【讨论】:

【参考方案2】:

杰森是对的。问题是在进入实际网站之前,cloudflare 在我的网站中进行了验证。我通过使用注册域解决了这个问题。因为我以为我使用的域名已经注册了。

【讨论】:

以上是关于Volley 字符串请求返回一个空响应的主要内容,如果未能解决你的问题,请参考以下文章

Volley Post 请求在 onResponse 内没有返回响应

Volley onErrorResponse getString偶尔返回null

Diango

android知识要点整理(14)----Volley(HTTP请求框架)

Android (java) 基于相同的 Volley API 响应 (JSON) 创建动态 UI

Volley 应用