繁体   English   中英

通过应用发送HTTP请求-AndroidStudio

[英]Sending HTTP Request with app - AndroidStudio

我想在按下按钮以等待访问任何网页的ESP8266时从我的Android应用程序发送HTTP请求,但是如果我的Android应用程序未实际打开网页而是“发送HTTP”,我希望请求”

现在我正在使用;

startActivity(new Intent(Intent.ACTION_QUICK_VIEW, Uri.parse("http://192.168.1.201/onled")));

它正在工作,但显然正在打开网页...

有人对如何解决我的问题有很好的建议吗? 我是Java新手。

new AsyncTask<Void,Void,Void>(){
        private Exception exception;
        @Override
        protected Void doInBackground(Void... voids) {
            try{
                URL url= new URL("http://yourserveraddress/resource.extension");
                HttpURLConnection con= (HttpURLConnection) url.openConnection();
                //write additional POST data to url.getOutputStream() if you wanna use POST method 
            }catch (Exception ex){
                this.exception=ex;
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    }.execute();

您应该创建HTTP连接和HTTP请求。

您可以通过以下几种方式进行操作:

请记住,发送HTTP请求是非确定性操作,您应该在单独的非UI线程中执行它以保持UI畅通无阻。 您可以通过AsyncTask做到这一点,这是最简单的解决方案,但是您也可以将RxJavaRxAndroid或其他方法结合使用。

有许多方法可以从应用程序发送HTTP请求。 例如,将HttpURLConnectionGET方法配合使用,可以按以下步骤进行操作:

 StringBuilder content = new StringBuilder();
        try {
            URL u1 = new URL(url);
            HttpURLConnection uc1 = (HttpURLConnection) u1.openConnection();
            if (uc1.getResponseCode()==HttpURLConnection.HTTP_OK) {

                InputStream is = uc1.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                String line;
                while ((line = br.readLine()) != null) {

                    content.append(line).append("\n");

                }

            }//other codes

您可以使用Google最复杂的方法找到简化的方法:

在这里找到参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM