【发布时间】:2013-09-04 07:00:33
【问题描述】:
我有 Android 设备 Samsung GT OS 2.2.1
我已成功通过 WIFI 向我的本地主机(我的 Windows 8 PC)发送 HTTP 请求
但是,考虑到速度,我还想学习“如何通过 USB 向我的 windows 8 PC 的本地主机发送 HTTP 请求”
这是我通过 WIFI 发送的代码
URL url = null;
try {
/*Wireless LAN adapter Local Area Connection*/
url = new URL("http://192.168.xxx.xxx/MySkripsi/testWriteFile.php");
String body = "";
body += "text=" + messageTujuan;
byte[] bytes = body.getBytes();
HttpURLConnection conn = null;
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
OutputStream out = conn.getOutputStream();
out.write(bytes);
out.close();
int status = conn.getResponseCode();
if (status != 200) {
Toast.makeText(con, "status = " + status , 0).show();
}
else
{
InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append((line + "\n"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Toast.makeText(con, "Return Nya = " +sb.toString(), 0).show();
Log.v("TEST" , "Return Nya = " + sb.toString());
tv.setText(sb.toString());
is.close();
}
} catch (Exception e) {
Toast.makeText(this, e.toString() + "#" + e.getMessage(), 0).show();
}
这段代码,给我结果
但是每当我关闭 WIFI 时 它显示了
“java.net.SocketException:网络不可达”
所以我通过一些网站研究它,我发现了这个
http://www.codeproject.com/Articles/191930/Android-Usb-Port-Forwarding
这里是打印屏幕
我的安卓设备中的 USB 隧道也显示“服务正在运行,已连接!”
但是,使用与上面相同的代码, 除了:
url = new URL("h**p://127.0.0.1:80/MySkripsi/testWriteFile.php");
结果是 “java.netConnectException :/127.0.0.1:80 - 连接被拒绝”
我认为我的防火墙有问题,但我不知道如何修复它
所以我的问题是
还有其他方法可以用来在android和服务器之间进行通信吗?
我真的需要 我的 android 设备发送数据到我的本地主机(Windows 8 电脑)作为我的服务器 并通过 USB 接收服务器的响应
谢谢..
【问题讨论】:
-
127.0.0.1始终是“此设备”,无论它在哪个设备上。如果您尝试从 Android 设备打开它,它将尝试联系 Android 设备本身,而不是您的 Windows 机器。您必须使用服务器的 IP 地址。 -
在我的 ipconfig 中它说 192.168.11.1 作为无线 LAN 适配器本地连接和 192.168.45.179 作为以太网适配器以太网。我试过 url=new URL("hp://192.168.45.179:80/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.11.1:80/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.45.179/MySkripsi/testWriteFile.php");和 url=new URL("hp://192.168.45.179/MySkripsi/testWriteFile.php"); ,但所有内容都显示“网络无法访问”
-
您需要了解基本的 TCP/IP 网络;
Network unreachable表示您的 IP 地址不在同一个子网上,并且您没有可用的路由器。如果ping不起作用,那么您的 HTTP 连接也将不起作用。
标签: java android windows usb localhost