Android:在不打开网络浏览器的情况下请求网址

时间:2017-04-19 07:04:59

标签: java android

我使用带有ESP8266模块的arduino,我目前正在使用网络浏览器(或安卓应用程序(调用网络浏览器))控制它。)url命令例如。“http://192.168.1.65/pin=10”(调用电机打开它。)

我想要一个Android按钮,在浏览器中不打开它就会请求该URL。这可能吗,我该怎么做?

3 个答案:

答案 0 :(得分:0)

我为自己编写了一个函数,可以请求任何URL。如果您有要发送的内容,还可以定义方法(POST,GET等)和数据主体。

public static String requestURL(URL url, String method, String body){
        String result = "";
        HttpURLConnection httpCon = null;
        try {
            httpCon = (HttpURLConnection) url.openConnection();

            assert httpCon != null;
            httpCon.setDoOutput(true);

            httpCon.setRequestMethod(method);

            OutputStreamWriter out = null;
            out = new OutputStreamWriter(httpCon.getOutputStream());

            assert out != null;
            out.write(body);

            out.close();

            httpCon.getInputStream();

            InputStream is = null;
            result = "";

            is = new BufferedInputStream(httpCon.getInputStream());

            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String inputLine = "";
            while ((inputLine = br.readLine()) != null) {
                result += inputLine;
            }
            return result;
        }catch (Exception e){
            return "{\"nothing\":\"nothing\"}";
        }
    }

我正在使用HTTPURLConnection来完成此任务。

PS。很抱歉我的代码不好,但这对我来说很有用,即使在我最早的Android编程体验状态下也是如此。

答案 1 :(得分:0)

完全有可能,但你的问题有点模糊。你是什​​么意思" Android按钮"?您是说要使用Android SDK编写程序吗?或者你想在网页上放一个按钮?

两者的答案都是使用套接字。您应该打开一个套接字并发送一个GET请求。如果要编写Web应用程序,或者在Java API中使用TCPClient或HttpURLConnection类,则可能需要使用WebSockets。进一步回答取决于您的选择。

另外,你拥有的api(http://192.168.1.65/pin=10)不是一个好的,你应该在你的嵌入式端有一个数据包解析器,并解析一个GET请求(这很简单,有数百个就绪使用可用的实现)。然后,您可以以更加灵活和可维护的方式获得许多参数。

答案 2 :(得分:0)

您可以使用排球库将请求发送到您的arduino,它非常易于使用。有关示例,请参阅https://developer.android.com/training/volley/simple.html

为您的按钮添加一个onlick监听器并使用它发出请求