Android客户端显示“网络错误”
By agenge
at 2016-05-26
0人收藏 • 4500人看过
使用fiddler调试,显示调用成功;
nginx日志也显示成功,302状态;
/page/1 路径也对,数据库确实有 topics ID为1的数据;
请问还有哪些会有问题?
- 登录后方可回帖
回复 #4 @agenge :
debug log 呢?
回复#5 @lincanbin :
Debug 模式启动,没看到任何输出,难道没配成功。但是console有输出:
Connected to the target VM, address: 'localhost:8601', transport: 'socket'
说明已经debug成功了。
回复 #6 @agenge :
你的日志级别不对,每个访问都会打下整个log 的。
回复#7 @lincanbin :
为什么会报类型转换错误?
W/System.err: java.lang.ClassCastException: java.lang.String cannot be cast to org.json.JSONObject 05-27 08:48:16.142 10552-11137/com.domain.carbonforum W/System.err: at com.domain.carbonforum.util.HttpUtil.postRequest(HttpUtil.java:232) 05-27 08:48:16.142 10552-11137/com.domain.carbonforum W/System.err: at com.domain.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:437) 05-27 08:48:16.142 10552-11137/com.domain.carbonforum W/System.err: at com.domain.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:375)
回复#7 @lincanbin :
JSONTokener jsonParser = new JSONTokener(postResult); JSONObject jsonObject = (JSONObject) jsonParser.nextValue();
其中 postResult 调试显示是一个完整的HTML代码。问题就出现在第二句 强制类型转换,不知道为什么不能强制转换。
排查了一下,问题应该出现于 postResult 是原生xml格式,而不是 原生 json格式,导致转换失败。
postResult 为何不是json原生格式呢?
回复#13 @lincanbin :
绑定了的,这个没问题。域名解析、Nginx server_name都设置了的,日志也显示能收到请求。
例如刷新首页:
- - [27/May/2016:11:15:07 +0800] "POST /page/1 HTTP/1.1" 302 5 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1; m1 metal Build/LMY47I)" - - [27/May/2016:11:15:07 +0800] "GET /page/1 HTTP/1.1" 302 5 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1; m1 metal Build/LMY47I)" - - [27/May/2016:11:15:07 +0800] "GET / HTTP/1.1" 200 2722 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1; m1 metal Build/LMY47I)"
现在的问题在于:
服务器返回的postResult 是一个html(xml)文本,理论上应该要是json文本才正确。
回复#14 @agenge :
你访问你的API那个域名,例如:
https://api.94cb.com/
然后截图给我看,返回这个说明正常:
{ "Status": 0, "ErrorCode": 403, "ErrorMessage": "Forbidden" }
回复#15 @lincanbin :
返回整个首页的HTML代码。 浏览器访问的话,就和访问 domain.com一样的结果。
回复#16 @agenge :
这里填了吗?
回复#18 @agenge :
当然,不你在我程序里登记一下,我怎么知道哪个域名对应的是API。