我使用带有ESP8266模块的arduino,我目前正在使用网络浏览器(或安卓应用程序(调用网络浏览器))控制它。)url命令例如。“http://192.168.1.65/pin=10”(调用电机打开它。)
我想要一个Android按钮,在浏览器中不打开它就会请求该URL。这可能吗,我该怎么做?
答案 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监听器并使用它发出请求