我在本地建了个web:199.99.99.144
打开模拟器通过浏览器直接输入地址http://199.99.99.144:80/Test/hjkhk.txt可以访问本机和本地web
但是为什么通过url就不行了
package com.web.test;import java.io.BufferedInputStream;   
import java.io.InputStream;   
import java.net.URL;   
import java.net.URLConnection;   
    
import org.apache.http.util.ByteArrayBuffer;   
import org.apache.http.util.EncodingUtils;   
    
import android.app.Activity;   
import android.os.Bundle;   
import android.widget.TextView;   
/*   
 * 获取网络数据,这里展示如何获取网络上的一个hjkhk.txt文本文件,架设了一个本地服务器   
 */   
public class WebTest extends Activity {   
  /** Called when the activity is first created. */   
  @Override   
  public void onCreate(Bundle savedInstanceState) {   
  super.onCreate(savedInstanceState);   
  setContentView(R.layout.main);   
    
  TextView tv = new TextView(this);   
  String myString = null;   
    
  try {   
  URL uri = new URL("http://199.99.99.144:80/Test/hjkhk.txt");//注意,这里的URL地址必须为网络地址,   
  //URL uri = new URL("http://localhost:8080/my/poem.txt");   
  //本地地址http://localhost:8080/my/poem.txt会报Connection Refused的异常   
  URLConnection ucon = uri.openConnection();   
  InputStream is = ucon.getInputStream();   
  BufferedInputStream bis = new BufferedInputStream(is);   
  ByteArrayBuffer baf = new ByteArrayBuffer(100);   
  int current = 0;   
  while((current = bis.read()) != -1) {   
  baf.append((byte)current);   
  }   
    
  //myString = new String(baf.toByteArray(), "GBK");   
  myString = EncodingUtils.getString(baf.toByteArray(), "GBK");   
  //myString = new String(baf.toByteArray());这个出现乱码,要在txt文件保存时选中utf-8   
  } catch(Exception e) {   
  myString = e.getMessage();   
  }   
    
  tv.setText(myString);   
  this.setContentView(tv);   
  }   
}   
网络权限也加了<uses-permission android:name="android.permission.INTERNET" />
得到的myString是空的
求解

解决方案 »

  1.   

      //URL uri = new URL("http://localhost:8080/my/poem.txt");   
      //本地地址http://localhost:8080/my/poem.txt会报Connection Refused的异常   局域网里,需要用模拟器带的工具转IP 端口到 PC机上。下面是 Android官方文档上的
    Forwarding PortsYou can use the forward command to set up arbitrary port forwarding — forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:adb forward tcp:6100 tcp:7100
    You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:adb forward tcp:6100 local:logd 
      

  2.   

    把localhost换成本机IP地址,使用tomcat模拟器服务器
      

  3.   

    我就是用的本机IP 199.99.99.144
    至于tomcat下了个6.0的
    因为我的JDK也是6.0的
    解压发现bin目录下startup.bat运行不起来
    安装不了
      

  4.   

    你看下tomcat控制台报什么错
    我估计的错误是因为没有添加JAVA_HOME环境变量,值为java的安装目录
      

  5.   

    看不到,双击一弹窗口就跳没了
    环境变量我设了啊
    JAVA_HOME
    C:\Program Files\Java
    PATH
    %JAVA_HOME%\bin;
      

  6.   

    你不要双击startup.bat
    你在命令行中运行startup.bat这个脚本
      

  7.   

    没有异常根本不知道是什么问题啊。楼主try catch中把Exception.printStackTrack()打印出来看看吧。。因为楼主可以直接访问ip地址文件,所以,服务器应该是没有问题的吧。还是将原始的Exception打印出来,可能楼主自已都能搞清楚了呢。在eclipse中的debug logcat是很强大的。如果不是用eclipse开发。。那也可以用adb logcat查看。
      

  8.   

    我重新下了个安装版的
    tomcat服务器搭建好了
    代码中IP也改成本机IP199.99.99.144
    显示到界面的myString还是没有
      

  9.   

    你的URL地址不能实用localhost 要用本机的IP地址 你改改试试
      

  10.   

    Exception.printStackTrack()
    应该是import 什么
    刚接触java和android
    我本来是做C++的
      

  11.   

    我一直用的本机199.99.99.144
    浏览器可以打开所有web
    就是代码得不到
      

  12.   

    没异常,LogCat error是空的
      

  13.   

    12-15 10:50:27.089: E/InputDispatcher(88): channel '4164c690 com.web.test/com.web.test.CBlog (server)' ~ Channel is unrecoverably broken and will be disposed!
      

  14.   

    12-15 10:48:33.615: E/AndroidRuntime(88): Error reporting WTF
    12-15 10:48:33.615: E/AndroidRuntime(88): java.lang.NullPointerException
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.RuntimeInit.wtf(RuntimeInit.java:345)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at android.util.Log$1.onTerribleFailure(Log.java:103)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at android.util.Log.wtf(Log.java:278)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl.getNetworkStatsDetailGroupedByUid(BatteryStatsImpl.java:5734)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl.access$100(BatteryStatsImpl.java:76)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl$Uid.computeCurrentTcpBytesReceived(BatteryStatsImpl.java:2453)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl$Uid.getTcpBytesReceived(BatteryStatsImpl.java:2442)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl.writeSummaryToParcel(BatteryStatsImpl.java:5433)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl.writeLocked(BatteryStatsImpl.java:4832)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.internal.os.BatteryStatsImpl.writeAsyncLocked(BatteryStatsImpl.java:4814)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.server.am.ActivityManagerService.<init>(ActivityManagerService.java:1386)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.server.am.ActivityManagerService.<init>(ActivityManagerService.java:148)
    12-15 10:48:33.615: E/AndroidRuntime(88):  at com.android.server.am.ActivityManagerService$AThread.run(ActivityManagerService.java:1288)
    12-15 10:48:35.684: E/StrictMode(88): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    12-15 10:48:35.684: E/StrictMode(88): java.lang.Throwable: Explicit termination method 'close' not called
    12-15 10:48:35.684: E/StrictMode(88):  at dalvik.system.CloseGuard.open(CloseGuard.java:184)
    12-15 10:48:35.684: E/StrictMode(88):  at java.io.FileInputStream.<init>(FileInputStream.java:80)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.pm.UserManager.readUserList(UserManager.java:114)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.pm.UserManager.<init>(UserManager.java:81)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.pm.UserManager.<init>(UserManager.java:85)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:923)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:833)
    12-15 10:48:35.684: E/StrictMode(88):  at com.android.server.ServerThread.run(SystemServer.java:163)
    12-15 10:48:51.925: E/SoundPool(88): error loading /system/media/audio/ui/Lock.ogg
    12-15 10:48:51.925: E/SoundPool(88): error loading /system/media/audio/ui/Unlock.ogg
    12-15 10:48:52.427: E/EventHub(88): could not get driver version for /dev/input/mouse0, Not a typewriter
    12-15 10:48:52.427: E/EventHub(88): could not get driver version for /dev/input/mice, Not a typewriter
    12-15 10:48:53.136: E/CommandListener(31): Failed to open /proc/sys/net/ipv6/conf/wlan0/disable_ipv6: No such file or directory
    12-15 10:48:53.145: E/WifiStateMachine(88): Failed to disable IPv6: java.lang.IllegalStateException: Unable to communicate to native daemon for disabling ipv6
    12-15 10:48:53.285: E/MobileDataStateTracker(88): default: Ignoring feature request because could not acquire PhoneService
    12-15 10:48:53.285: E/MobileDataStateTracker(88): default: Could not enable APN type "default"
    12-15 10:49:05.235: E/ActivityThread(157): Failed to find provider info for com.android.inputmethod.latin.dictionarypack
    12-15 10:49:05.244: E/BinaryDictionaryGetter(157): Could not find a dictionary pack
    12-15 10:49:10.756: E/StrictMode(180): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/com.android.launcher/databases/launcher.db, table = null, query = SELECT MAX(_id) FROM favorites
    12-15 10:49:10.756: E/StrictMode(180): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
    12-15 10:49:10.756: E/StrictMode(180):  at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:98)
    12-15 10:49:10.756: E/StrictMode(180):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:51)
    12-15 10:49:10.756: E/StrictMode(180):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1573)
    12-15 10:49:10.756: E/StrictMode(180):  at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1542)
    12-15 10:49:10.756: E/StrictMode(180):  at com.android.launcher2.LauncherProvider$DatabaseHelper.initializeMaxId(LauncherProvider.java:597)
    12-15 10:49:10.756: E/StrictMode(180):  at com.android.launcher2.LauncherProvider$DatabaseHelper.<init>(LauncherProvider.java:221)
    12-15 10:49:10.756: E/StrictMode(180):  at com.android.launcher2.LauncherProvider.onCreate(LauncherProvider.java:87)
    12-15 10:49:10.756: E/StrictMode(180):  at android.content.ContentProvider.attachInfo(ContentProvider.java:941)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread.installProvider(ActivityThread.java:4198)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread.installContentProviders(ActivityThread.java:3963)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3917)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread.access$1300(ActivityThread.java:122)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
    12-15 10:49:10.756: E/StrictMode(180):  at android.os.Handler.dispatchMessage(Handler.java:99)
    12-15 10:49:10.756: E/StrictMode(180):  at android.os.Looper.loop(Looper.java:137)
    12-15 10:49:10.756: E/StrictMode(180):  at android.app.ActivityThread.main(ActivityThread.java:4340)
    12-15 10:49:10.756: E/StrictMode(180):  at java.lang.reflect.Method.invokeNative(Native Method)
    12-15 10:49:10.756: E/StrictMode(180):  at java.lang.reflect.Method.invoke(Method.java:511)
    12-15 10:49:10.756: E/StrictMode(180):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    12-15 10:49:10.756: E/StrictMode(180):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    之前点错工程了,LogCat日志很多,黑红相间
      

  15.   

    用filter查看自已想看的日志。
      

  16.   

    我奇怪的是模拟器只能ping通10.0.2.2和127.0.0.1
    为什么浏览器却可以上本地web比如199.99.99.144
    明显是ping不通的网络
    还是ping的通ping不通不影响?
      

  17.   

    是没关闭web啊
    关了肯定连不上ping不通
    开了能连上ping不通