Android 中调用 url。无需等待任何回应

Posted

技术标签:

【中文标题】Android 中调用 url。无需等待任何回应【英文标题】:Call url in Android. No need to wait for any response 【发布时间】:2017-10-18 01:30:05 【问题描述】:

在我的项目中,我需要调用一个 URL。

这个网址,看起来像:http://myip:80/increaseCounter.php

我有一个带有 mysql 的 Xampp (MAC)。 increaseCounter.php 的功能是从表中检索值,将其增加 1,然后更新它。 我在 localhost 中测试的 url,通过 Chrome 从另一台设备指向,并且运行良好。

但是知道我只是想在 android 中调用这个链接,我不需要恢复任何数据或类似的东西,只需调用它。

我尝试过:

private void trackUrl(String href) 
    HttpURLConnection con = null;
    try 
        URL url = new URL(href);
        con = (HttpURLConnection) url.openConnection();
        con.connect();
     catch (Exception e) 
        Log.d("APP", e.getMessage());
     finally 
        if (con != null) 
            con.disconnect();
        
    

但是不行。xampp中没有连接日志,mysql中的数据也没有更新。

=======

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="my.aswsome.app"
    android:versionCode="15">

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />

    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />

    <uses-permission android:name="android.permission.INTERNET" />
.....

【问题讨论】:

共享清单。并分享错误信息。 @AhmadAghazadeh Manifest 具有 Internet 连接权限,因为这个应用程序很久以前就在使用它。并且没有错误日志。 :// 如果你用int code = urlConnection.getResponseCode(); if(code==200) Log.i("TAG","success") 而不是con.connect();会怎样 @Denny 和 urlConnection.getResponseCode(); 工作得很好。我仍然不明白到底发生了什么,但工作。如果你愿意,请回答,我会接受。谢谢! 把它作为一个小解释的答案发布 【参考方案1】:

试试

int code = urlConnection.getResponseCode();
if(code==200) 
    Log.i("TAG","success");
 

而不是con.connect();

https://developer.android.com/reference/java/net/URLConnection.html#connect().connect(); only 打开连接,但之后什么也不做。所以通过.getResponseCode() 你实际上是在做一个请求。

【讨论】:

【参考方案2】:
     you can put url directly that type

    URL url = new URL("http://myip:80/increaseCounter.php");

   HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
   try 
     InputStream in = new BufferedInputStream(urlConnection.getInputStream());
     readStream(in);
    finally 
     urlConnection.disconnect();
   

【讨论】:

以上是关于Android 中调用 url。无需等待任何回应的主要内容,如果未能解决你的问题,请参考以下文章

无需在 Android Studio 中打开浏览器即可点击 URL

Async / Await方法 - 无需等待方法执行

无需等待结果即可从Web API调用另一个Web API

PHP & jQuery ajax 调用无需等待响应

记录或调试 iOS 的 Firebase HttpMetric 跟踪调用(无需等待 12 小时)

如何在异步函数中处理多个等待