4

Web サービスを呼び出すと、次の例外が返されます: java.net.SocketException Permission denied. 実際の問題が何であるかはわかりません。これを解決する方法がわかりませんか?

home.java ページ:

     try 
     { 
       url = new URL("http://localhost/TraderLevels/subscriber.php");
             conn = (HttpURLConnection) url.openConnection();
             dis = conn.getInputStream();
     }
     catch (Exception e) 
     {
            e.printStackTrace();

     }

サブスクライバー.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

4 に答える 4

4

http://developer.android.com/guide/appendix/faq/commontasks.html#localhostalias

ifconfig

ループバックの代わりに実際のネットワーク アドレスを取得し、その実際のネットワーク アドレスを使用します。

于 2011-02-24T06:31:32.540 に答える
2

実際にローカルホストで Web サーバーを実行していますか?

その場合、netstat でリッスンしていることを確認し、ブラウザや netcat (nc) などの既知の動作クライアントで実際にテストしましたか?

そして、localhost が Android デバイス自体を意味することを認識していますか? サーバーがエミュレーターをホストする開発マシンで実行されている場合は、代わりに開発マシンのループバックに特別なエイリアス アドレスを使用する必要があります。アプリが実際の電話で実行されている場合、Wi-Fi 経由または USB テザリングをセットアップしない限り、PC 上のサーバーに接続するのはさらに複雑です。

于 2010-11-23T10:07:01.807 に答える
1

「localhost」または「127.0.0.1」を使用する代わりに、イーサネット IP アドレス 192.168.1.80 に変更するだけで動作します...

于 2012-11-21T03:00:11.007 に答える
0

私はその解決策を得ました。ApacheServerの設定ファイルを変更しました。(私はphpにあるWebサービスをセルしました)

于 2010-12-17T13:56:27.217 に答える