当我调用Web服务时,它会返回此异常:java.net.SocketException权限被拒绝。我不知道这是实际问题。我不知道怎么解决这个问题?
home.java页面:
try
{
url = new URL("http://localhost/TraderLevels/subscriber.php");
conn = (HttpURLConnection) url.openConnection();
dis = conn.getInputStream();
}
catch (Exception e)
{
e.printStackTrace();
}
subscriber.php
$username="root";
$password="";
$database="mydb";
$server="localhost";
$connection = mysql_connect($server,$username,$password);
if (!$connection)
{
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected)
{
die('Can\'t use db : ' . mysql_error());
}
$query="SELECT * from user";
$result = mysql_query($query);
$dom = new DOMDocument('1.0','UTF-8');
$dnode = $dom->createElement('usesssrdetails');
$docNode = $dom->appendChild($dnode);
$result = mysql_query($query);
$rowNo=1;
while ($row = @mysql_fetch_assoc($result))
{
$node = $dom->createElement('user');
$categoryNode = $docNode->appendChild($node);
$idNode = $dom->createElement('userid',($row['userID']));
$categoryNode->appendChild($idNode);
$idNode = $dom->createElement('email',($row['email']));
$categoryNode->appendChild($idNode);
$rowNo=$rowNo+1;
}
$kmlOutput = $dom->saveXML();
echo $kmlOutput;
?>
我通过在清单中添加以下代码解决了上述问题。
< uses-permission android:name="android.permission.INTERNET" />
但我有另一个例外: java.net.ConnectException:localhost / 127.0.0.1:80 - 拒绝连接。
请告诉我如何避免这个问题。
答案 0 :(得分:4)
http://developer.android.com/guide/appendix/faq/commontasks.html#localhostalias
的ifconfig
获取真实的网络地址而不是环回并使用该真实的网络地址。
答案 1 :(得分:2)
您实际上是在localhost上运行网络服务器吗?
如果是这样,您是否已经验证它正在使用netstat进行监听并实际使用已知工作的客户端(如浏览器或netcat(nc))对其进行测试?
你是否意识到localhost意味着Android设备本身?如果服务器在托管模拟器的开发计算机上运行,则需要使用开发计算机环回的特殊别名地址。如果你的应用程序在实际的手机上运行,那么联系你电脑上的服务器会更加复杂,除非你通过wifi或设置USB网络共享。
答案 2 :(得分:1)
我只是更改为我的以太网IP地址192.168.1.80,而不是使用“localhost”或“127.0.0.1”,它可以工作......
答案 3 :(得分:0)
我得到了那个解决方案。我更改了Apache Server的配置文件。 (我已经在php中使用了一个Web服务)