无法发送 HTTP 请求 Android
Cannot send HTTP request Android
我修改了 Albeacon Reference Application 的 RangingActivity,以便在每次检测到与信标相关的更改时发送 HTTP 请求。我只需要向服务器发送一个请求,仅此而已。无需进一步互动。
在发出 HTTP 请求之前一切正常 - 没有任何反应:
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Beacon firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
String distance = String.valueOf(firstBeacon.getDistance());
String url_string = "http://" + IP_string + "/index.py?name=" + Name_string + "&location=" + beacons.iterator().next().getId2() + "," + beacons.iterator().next().getId3() + "&distance=" + beacons.iterator().next().getDistance();
Log.v("url", url_string);
try {URL url = new URL(url_string);
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.disconnect();
} catch (IOException e){Log.v("error", e.toString());}
} catch (MalformedURLException m){Log.v("error", m.toString());}
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
我是 Android 的新手,所以我不确定这是否是 UIThread 上的 运行。如果是,那么我将非常感谢使用 Asynctasks(或任何可能对我的情况有帮助的替代方法)实现此功能的一些帮助。
你错过了一步:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.disconnect();
试试看:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
int response = conn.getResponseCode();
Log.d(DEBUG_TAG, "The response is: " + response);
is = conn.getInputStream();
conn.disconnect();
最后阅读:http://developer.android.com/training/basics/network-ops/connecting.html
我修改了 Albeacon Reference Application 的 RangingActivity,以便在每次检测到与信标相关的更改时发送 HTTP 请求。我只需要向服务器发送一个请求,仅此而已。无需进一步互动。
在发出 HTTP 请求之前一切正常 - 没有任何反应:
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Beacon firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
String distance = String.valueOf(firstBeacon.getDistance());
String url_string = "http://" + IP_string + "/index.py?name=" + Name_string + "&location=" + beacons.iterator().next().getId2() + "," + beacons.iterator().next().getId3() + "&distance=" + beacons.iterator().next().getDistance();
Log.v("url", url_string);
try {URL url = new URL(url_string);
try {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.disconnect();
} catch (IOException e){Log.v("error", e.toString());}
} catch (MalformedURLException m){Log.v("error", m.toString());}
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
我是 Android 的新手,所以我不确定这是否是 UIThread 上的 运行。如果是,那么我将非常感谢使用 Asynctasks(或任何可能对我的情况有帮助的替代方法)实现此功能的一些帮助。
你错过了一步:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.disconnect();
试试看:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
int response = conn.getResponseCode();
Log.d(DEBUG_TAG, "The response is: " + response);
is = conn.getInputStream();
conn.disconnect();
最后阅读:http://developer.android.com/training/basics/network-ops/connecting.html