Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 局域网上的Android-httpget请求_Java_Android - Fatal编程技术网

Java 局域网上的Android-httpget请求

Java 局域网上的Android-httpget请求,java,android,Java,Android,我使用下面的代码从局域网上的Web服务器获取一个页面的源代码,它是一个纯文本,没有html标记。但我总是得到空字符串作为回报,如果我在浏览器中打开相同的URI,我可以看到文本。以下是我的代码: String url = "http://192.168.1.40/touchscreens/get.qsp?display=1"; HttpClient client = new DefaultHttpClient();

我使用下面的代码从局域网上的Web服务器获取一个页面的源代码,它是一个纯文本,没有html标记。但我总是得到空字符串作为回报,如果我在浏览器中打开相同的URI,我可以看到文本。以下是我的代码:

                String url = "http://192.168.1.40/touchscreens/get.qsp?display=1";

                HttpClient client = new DefaultHttpClient();

                HttpGet request = new HttpGet();
                request.setHeader("Content-Type", "text/plain; charset=utf-8");

                request.setURI(new URI(url));
                HttpResponse response = client.execute(request);

                in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

                StringBuffer sb = new StringBuffer("");
                String line = "";
                String NL = System.getProperty("line.separator");

                while ((line = in.readLine()) != null) {
                    sb.append(line + NL);
                }

                String page = sb.toString();

                Toast.makeText(getApplicationContext(), page, Toast.LENGTH_LONG).show();

还有一件事,当我在android emulator浏览器中输入相同的URL时,我什么也看不到。我遗漏了什么吗?

我建议您应该使用fiddler调试HTTP请求,请参阅。这将调试来自浏览器和应用程序的internet请求,并显示您的请求是否缺少必要的头。

使用IP调用时是否应该有一些端口?StringBuilder类通常应优先于StringBuffer类使用,因为它支持所有相同的操作,但速度更快,因为它没有执行同步。@ThinkStiple:它在端口80上工作,正如我所说,当我在google chrome中粘贴相同的url时,我成功地看到了文本。您的响应中有什么状态码?检查response.getStatus。但在上面的代码中,您错过了端口条目。以及findout状态代码。这是我的请求在fiddler2中的原始视图:GET HTTP/1.1主机:192.168.1.40连接:keep alive缓存控制:max age=0用户代理:Mozilla/5.0 Windows NT 6.1;WOW64 AppleWebKit/535.7 KHTML,像geckocrome/16.0.912.75 Safari/535.7 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受编码:gzip,deflate,sdch接受语言:en-GB,en-US;q=0.8,en;q=0.6接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3你应该问的问题是:fiddler对你的Android应用程序说了什么,而不是你的浏览器说了什么。你说浏览器可以工作,fiddler应该告诉你有什么不同。