如何用Android Java直接执行http命令?

问题描述 投票:0回答:1

我有一个自定义设备,它通过热点与我的手机连接,通过我的应用程序,我可以正确连接并登录到该自定义设备,例如:

http://x.x.x.x/cgi-bin/web.cgi?action=API&action2=Login&param1=username&param2=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&param1=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 方式解决,这种方法也不起作用......也许我错过了一些需要考虑的事情?...

java httpurlconnection
1个回答
0
投票

这是一个使用 OkHttp 的 Android POST 示例..

https://www.digitalocean.com/community/tutorials/okhttp-android-example-tutorial

© www.soinside.com 2019 - 2024. All rights reserved.