Android中的Web服务(java.net.SocketException Permission denied)异常

时间:2010-11-23 06:04:35

标签: android web-services socketexception

当我调用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 - 拒绝连接。

请告诉我如何避免这个问题。

4 个答案:

答案 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服务)