android客户端打开后显示网络错误?

android客户端打开后显示网络错误?

By gzyuan at 2016-09-09
1人收藏 • 5218人看过

论坛安装好后,可以通过 http://192.168.3.4/Carbon 来访问。

我在系统设置里将客户端API域名和PC端主站域名都设置为 http://192.168.3.4/Carbon/ 


在android代码 APIAddress.java里设置如下:

String = + ; String = + ; String = + ;


打开android客户端后会显示网络错误,抓了这些日志:


09-09 15:04:36.672 3562-3627/com.lincanbin.carbonforum D/POST URL :: http://192.168.3.4/Carbon/page/1

09-09 15:04:36.692 3562-3627/com.lincanbin.carbonforum D/POST parameter: SKey=12450&STime=1473404676&SValue=9a387a67d756118cd9f55904e457aaa3

09-09 15:04:36.716 3562-3562/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libEGL_tiantianVM.so

                                                                 

                                                                 [ 09-09 15:04:36.740  3562: 3562 D/         ]

                                                                 HostConnection, value 22468

                                                                 

                                                                 

                                                                 [ 09-09 15:04:36.740  3562: 3562 D/         ]

                                                                 OpenglPort, stream_port_num 22468

                                                                 

                                                                 [ 09-09 15:04:36.740  3562: 3562 D/         ]

                                                                 HostConnection::get() New Host Connection pid 3562, tid 3562, stream_port_num=22468

                                                                 

                                                                 

                                                                 [ 09-09 15:04:36.740  3562: 3562 D/         ]

                                                                 useHgsmi for host connection!!!

                                                                 

                                                                 

                                                                 [ 09-09 15:04:36.740  3562: 3562 D/         ]

                                                                 HostConnection::get() New Host Connection established 0xb93beee8, tid 3562

09-09 15:04:36.756 3562-3562/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libGLESv1_CM_tiantianVM.so

09-09 15:04:36.756 3562-3562/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libGLESv2_tiantianVM.so

09-09 15:04:36.768 3562-3562/com.lincanbin.carbonforum W/EGL_tiantianVM: eglSurfaceAttrib not implemented

09-09 15:04:36.772 3562-3562/com.lincanbin.carbonforum D/OpenGLRenderer: Enabling debug mode 0

09-09 15:05:01.804 3562-3627/com.lincanbin.carbonforum D/Post Error: No Network

09-09 15:05:01.804 3562-3627/com.lincanbin.carbonforum W/System.err: java.net.ProtocolException: content-length promised 67 bytes, but received 0

09-09 15:05:01.816 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.RetryableOutputStream.close(RetryableOutputStream.java:52)

09-09 15:05:01.820 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:636)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.util.HttpUtil.postRequest(HttpUtil.java:192)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:436)

09-09 15:05:01.832 3562-3627/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:374)

09-09 15:05:01.840 3562-3627/com.lincanbin.carbonforum W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)

09-09 15:05:01.852 3562-3627/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)

09-09 15:05:01.852 3562-3627/com.lincanbin.carbonforum W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

09-09 15:05:01.856 3562-3627/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

09-09 15:05:01.868 3562-3627/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

09-09 15:05:01.868 3562-3627/com.lincanbin.carbonforum W/System.err:     at java.lang.Thread.run(Thread.java:841)



看了很久,不知是什么原因。看了别人的帖子,说是配置问题,但不知哪里有错。

19 个回复 | 最后更新于 2016-09-12
gzyuan
2016-09-09
#1

在android代码 APIAddress.java里设置如下:

public static final String DOMAIN_NAME = "http://192.168.3.4/Carbon" + WEBSITE_PATH; // Main domain name
public static final String MOBILE_DOMAIN_NAME = "http://192.168.3.4/Carbon" + WEBSITE_PATH; // Domain name of mobile version
public static final String BASIC_API_URL = "http://192.168.3.4/Carbon" + WEBSITE_PATH; // Domain name of API


lincanbin
2016-09-10
#2

回复#1 @gzyuan :

API域名跟主站域名不能也不可能设置成一样的,必须是不同的。

你可以把主站设为127.0.0.1,为API设置为内网的192.168域名。

gzyuan
2016-09-10
#3

回复#2 @lincanbin :

好的。我现在将主站域名设为http://127.0.0.1/Carbon/

而客户端API域名为http://192.168.3.4/Carbon/ 


那请问下在APIAddress.java中的DOMAIN_NAME和BASIC_API_URL应该怎么设置呢?

lincanbin
2016-09-10
#4

回复#3 @gzyuan :

当然只填API域名,PC端对于客户端来说是没用的。

lincanbin
2016-09-10
#5

回复#3 @gzyuan :

你就你现在这样填也可以了。

本来应该跟后台设置保持一致的,反正你只是测试。

gzyuan
2016-09-10
#6

回复#5 @lincanbin :

嗯。现在客户端启动后会提示“网络错误”,日志里提示发生了异常:

java.net.ProtocolException: content-length promised 67 bytes, but received 0


如果我将HttpUtil.java 里的这句注释掉:

httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterString.length()));

就不会有这个异常,但会发生另外一个异常,不知道这个和配置有没有关系?

lincanbin
2016-09-10
#7

回复#6 @gzyuan :

看你debug打出来的响应报文啊。

gzyuan
2016-09-10
#8

回复#7 @lincanbin :

你指的响应报文在哪里看呢?


我在apache的access.log中看到这些:

192.168.3.4 - - [10/Sep/2016:10:46:45 +0800] "POST /Carbon/page/1 HTTP/1.1" 302 -

192.168.3.4 - - [10/Sep/2016:10:46:45 +0800] "GET /Carbon/ HTTP/1.1" 200 6170

192.168.3.4 - - [10/Sep/2016:10:48:11 +0800] "-" 408 -


以下是logcat的输出:

09-10 10:46:45.865 19517-19553/com.lincanbin.carbonforum D/POST URL :: http://192.168.3.4/Carbon/page/1

09-10 10:46:45.873 19517-19553/com.lincanbin.carbonforum D/POST parameter: SKey=12450&STime=1473475605&SValue=ca64ca860279d76a713a3c221cb96e1a

09-10 10:46:45.905 19517-19517/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libEGL_tiantianVM.so

                                                                   

                                                                   [ 09-10 10:46:45.905 19517:19517 D/         ]

                                                                   HostConnection, value 22468

                                                                   

                                                                   

                                                                   [ 09-10 10:46:45.905 19517:19517 D/         ]

                                                                   OpenglPort, stream_port_num 22468

                                                                   

                                                                   [ 09-10 10:46:45.905 19517:19517 D/         ]

                                                                   HostConnection::get() New Host Connection pid 19517, tid 19517, stream_port_num=22468

                                                                   

                                                                   

                                                                   [ 09-10 10:46:45.905 19517:19517 D/         ]

                                                                   useHgsmi for host connection!!!

                                                                   

                                                                   

                                                                   [ 09-10 10:46:45.905 19517:19517 D/         ]

                                                                   HostConnection::get() New Host Connection established 0xb8302b40, tid 19517

09-10 10:46:45.909 19517-19517/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libGLESv1_CM_tiantianVM.so

09-10 10:46:45.909 19517-19517/com.lincanbin.carbonforum D/libEGL: loaded /system/lib/egl/libGLESv2_tiantianVM.so

09-10 10:46:45.933 19517-19517/com.lincanbin.carbonforum W/EGL_tiantianVM: eglSurfaceAttrib not implemented

09-10 10:46:45.933 19517-19517/com.lincanbin.carbonforum D/OpenGLRenderer: Enabling debug mode 0

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum D/Post Error: No Network

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err: java.net.ProtocolException: content-length promised 67 bytes, but received 0

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.RetryableOutputStream.close(RetryableOutputStream.java:52)

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:636)

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)

09-10 10:47:10.969 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.util.HttpUtil.postRequest(HttpUtil.java:192)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:436)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at com.lincanbin.carbonforum.IndexActivity$GetTopicsTask.doInBackground(IndexActivity.java:374)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

09-10 10:47:10.973 19517-19553/com.lincanbin.carbonforum W/System.err:     at java.lang.Thread.run(Thread.java:841)

09-10 10:48:28.569 19517-19523/com.lincanbin.carbonforum D/dalvikvm: GC_FOR_ALLOC freed 551K, 10% free 6089K/6712K, paused 4ms, total 5ms


lincanbin
2016-09-10
#9

回复#8 @gzyuan :

你现在手机上确认你那个地址是可访问的吧。

lincanbin
2016-09-10
#10

回复#8 @gzyuan :

浏览器打开地址,能看到如下响应说明成功。

{
	"Status": 0,
	"ErrorCode": 403,
	"ErrorMessage": "Forbidden"
}


gzyuan
2016-09-10
#11

回复#9 @lincanbin :

在手机上用浏览器打开http://192.168.3.4/Carbon/是可以正常访问的。

lincanbin
2016-09-10
#12

头疼,搞不懂。

gzyuan
2016-09-10
#13

回复#10 @lincanbin :

你说的这些响应在哪里看的,还是要用什么工具才能看到?

lincanbin
2016-09-10
#14

回复#13 @gzyuan :

Debug编译会返回报文,不过看起来似乎没有响应报文。

你可以用Fiddler给手机抓下网络请求包。

gzyuan
2016-09-10
#15

用真正的域名来设置的话,就可以连上。看来在本地用IP是测试不了的。

lincanbin
2016-09-12
#16

回复#15 @gzyuan :

你电脑的防火墙拦截了内网的访问了吧。

gzyuan
2016-09-12
#17

回复#16 @lincanbin :

我不用杀毒软件,也不开防火

lincanbin
2016-09-12
#18

回复#17 @gzyuan :

IP在程序里跟域名是等价的。

lincanbin
2016-09-12
#19

回复#17 @gzyuan :

我自己平时测试也是用内网IP测试Android客户端。


登 录


现在注册

QQ  登 录    Weibo  登 录    GitHub  登 录