我有一个自定义设备,它通过热点与我的手机连接,通过我的应用程序,我可以正确连接并登录到该自定义设备,例如:
http://x.x.x.x/cgi-bin/web.cgi?action=API&action2=Login¶m1=username¶m2=password
使用此连接顺序:
url = new URL(URLCommand);
connection = (HttpURLConnection) url.openConnection();
if (android.os.Build.VERSION.SDK_INT > 9)
{
StrictMode.ThreadPolicy policy;
policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED) {
并且我可以正确获取
responseCode = 200
,这是可以的。
然后我尝试发送另一个 HTTP url 来尝试重新启动该自定义设备,例如:
http://x.x.x.x/cgi-bin/web.cgi?session_id=xxxxxxxxxx&action=API&action2=value1¶m1=RESTART
用作 POST:
url = new URL(URLCommand);
connectionForCommand = (HttpURLConnection) url.openConnection();
connectionForCommand.setRequestMethod("POST");
connectionForCommand.setDoOutput(true);
BufferedReader responseReader = new BufferedReader(new InputStreamReader(connectionForCommand.getInputStream()));
String responseData = responseReader.readLine();
所以我认为
setDoOutput(true)
会“执行”该网址并使该自定义设备重新启动...
我还尝试使用 lambda 将此代码放在线程内部,如下所示:
Thread = () -> {}
避免在 DialogFragment 的主要活动中运行它,但它不起作用。 有没有一种方法可以在不使用任何第三方的情况下执行该http?或者我是否必须仅使用第三方部分才能达到该目标,因为 HttpURLConnection 不适合该目标?谢谢!干杯
编辑:我还尝试使用 Volley 库执行 StringRequest,如下所示:
IOException
但是即使我以 POST 方式解决,这种方法也不起作用......也许我错过了一些需要考虑的事情?...