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
android知识要点整理(14)----Volley(HTTP请求框架)