1

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

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" />

与 Manifest 文件中的 uses-sdk 标签平行。

4

3 回答 3

1

在尝试影响输入流之前尝试建议服务器您准备接受什么样的数据,如果它是 json,让服务器知道您接受 application/json 类型的数据,例如

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

并且不要忘记您要执行的操作,GET 或 POST

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

请提及您收到的错误/消息,以便我们知道服务器想说什么!

于 2012-12-24T06:40:31.793 回答
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();
   }
 }

并在清单文件中添加用户权限。

于 2012-12-24T06:35:22.930 回答
0

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

您只需要在 AsyncTask类中运行以下代码并传递您的 URL,它将返回来自服务器的响应。

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"/>

让我知道你对此的评论!!

于 2012-12-24T06:37:53.373 回答