2012-12-24 194 views
1

我是Android新手,这是我的第一个应用程序。我要连接互联网并从我的公司服务器下载JSON,但无法获得输入流,请检查此代码并提供帮助。Android应用程序互联网连接

URL url = new URL("http://www.android.com/"); 
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
urlConnection.connect(); 
InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

URL不是问题我测试了很多URL。在这段代码中,最后一行给出错误。我在我的开发机器上使用开放式连接(无代理专用防火墙),仿真器浏览器能够访问互联网。

我在清单文件已经添加

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

平行用途-SDK标签。

+1

你想使用JSON下载文件或数据连接? –

+0

您必须将此行添加到AndroidManifest.xml中:

+1

你得到了什么错误? – FredTheLover

回答

0

这是我工作的代码示例..

所有你需要在的AsyncTask类下面的代码运行通过你的网址,它会返回来自服务器的响应。

public String getResult(String url) { 

     Log.v(TAG, "Final Requsting URL is : :"+url); 

     String line = ""; 
     String responseData = null; 

     try { 
      StringBuilder sb = new StringBuilder(); 
      String x = ""; 
      URL httpurl = new URL(url); 
      URLConnection tc= httpurl.openConnection(); 


      /*URLConnection tc = twitter.openConnection(); 
      HttpURLConnection httpConnection = (HttpURLConnection) tc; 
      httpConnection.setRequestMethod("POST");*/ 
      //tc.setRe 
      //tc.setDoOutput(false); 

      BufferedReader in = new BufferedReader(
          new InputStreamReader(tc.getInputStream())); 

      while ((line = in.readLine()) != null) { 
       sb.append(line + "\n"); 
       x = sb.toString(); 
      } 
      responseData = new String(x); 
     } 
     catch (UnknownHostException uh){    
      Log.v("NewWebHelper", "Unknown host :"); 
      uh.printStackTrace(); 
     } 
     catch (FileNotFoundException e) { 
      Log.v("NewWebHelper", "FileNotFoundException :"); 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      Log.v("NewWebHelper", "IOException :"); 
      e.printStackTrace(); 
     } 
     catch (Exception e) { 
      Log.v("NewWebHelper", "Exception :"); 
      e.printStackTrace(); 
     } 
     return responseData; 
    } 

确保您需要以下Internet权限在您的清单文件这样..

<uses-permission android:name="android.permission.INTERNET"/> 

让我知道关于你对此有何评论!

+0

是的,我已经在Manifest文件中添加了这个。对我来说,这段代码给出了错误:android.os.NetworkOnMainThreadException –

+0

是啊Saurabh!当应用程序尝试在其主线程上执行联网操作时,会引发此异常。在AsyncTask中运行你的代码,见[this](http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception) – swiftBoy

+0

谢谢,是的,这是唯一的问题。解决了..!! –

0

使用此。

URL url = new URL("http://www.google.com/"); 
    HttpURLConnection myConnection = (HttpURLConnection) url.openConnection(); 
    try { 
    InputStream in = new BufferedInputStream(myConnection.getInputStream()); 
    readStream(in); 
    finally { 
    myConnection.disconnect(); 
    } 
} 

并且还在您的清单文件中添加用户权限。

+0

我已经加入<使用许可权 \t机器人:名字= “android.permission.INTERNET对”/> \t \t <使用许可权 \t机器人:名字= “android.permission.ACCESS_NETWORK_STATE”/> –

+0

发表您的logcat .for更好的帮助 – Unknown

1

尝试建议你准备尝试的InputStream FECT之前接受,如果是JSON,让服务器知道您接受类型的应用程序/ JSON,像

httpcon = (HttpURLConnection) ((new URL(http://www.android.com/).openConnection())); 
httpcon.setRequestProperty("Accept", "application/json"); 

和数据什么样的数据服务器不要忘记,你要执行的操作,GET或POST

httpcon.setRequestMethod("POST"); or httpcon.setRequestMethod("GET"); 

请注明错误/消息你正在让我们知道什么是服务器是想说!

相关问题