Android 上无法连接到网页

发布于 2024-09-12 02:42:24 字数 5438 浏览 3 评论 0原文

我有一个用于连接网页的代码,但它总是显示

“连接失败;主机为 未解决:www.streetcar.org:80"

代码如下。

package myapp.httpdwnd;

import android.app.Activity;
import java.io.InputStream;  
import android.os.Bundle;  
import android.widget.LinearLayout;  
import android.widget.TextView;  
import java.io.IOException;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.client.HttpClient;  
import org.apache.http.client.methods.HttpGet;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.json.JSONArray;  
import org.json.JSONException;  
import org.json.JSONObject;  


public class httpdwndActivity extends Activity
{
      TextView txt;  

  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
     LinearLayout rootLayout = new LinearLayout(getApplicationContext());  
             txt = new TextView(getApplicationContext());  
             rootLayout.addView(txt);  
             setContentView(rootLayout);
               txt.setText("Connecting...");  
                      txt.setText(connect("http://www.streetcar.org/mim/cable/images/cable-01.jpg")); 
  }

    private String connect(String url){  

               // Create the httpclient  
               HttpClient httpclient = new DefaultHttpClient();  

               // Prepare a request object  
               HttpGet httpget = new HttpGet(url);   

               // Execute the request  
               HttpResponse response;  

               // return string  
               String returnString = null;  

               try {  

                   // Open the webpage.  
                   response = httpclient.execute(httpget);  

                   if(response.getStatusLine().getStatusCode() == 200){  
                       // Connection was established. Get the content.   

                       HttpEntity entity = response.getEntity();  
                       // If the response does not enclose an entity, there is no need  
                       // to worry about connection release  

                       if (entity != null) {  
                           // A Simple JSON Response Read  
                           InputStream instream = entity.getContent();  

                           // Load the requested page converted to a string into a JSONObject.  
                           JSONObject myAwway = new JSONObject(convertStreamToString(instream));  

                           // Get the query value'  
                           String query = myAwway.getString("query");  

                           // Make array of the suggestions  
                           JSONArray suggestions = myAwway.getJSONArray("suggestions");  

                           // Build the return string.  
                           returnString = "Found: " + suggestions.length() + " locations for " + query;  
                           for (int i = 0; i < suggestions.length(); i++) {  
                               returnString += "\n\t" + suggestions.getString(i);  
                           }  

                           // Close the stream.  
                           instream.close();  
                       }  
                   }  
                   else {  
                       // code here for a response other than 200.  A response 200 means the webpage was ok  
                       // Other codes include 404 - not found, 301 - redirect etc...  
                      // Display the response line.  
                       returnString = "Unable to load page - " + response.getStatusLine();  
                   }  
               }  
               catch (IOException  ex) {  
                   // thrown by line 80 - getContent();  
                   // Connection was not established  
                  returnString = "Connection failed; " + ex.getMessage();  
               }  
               catch (JSONException ex){  
                   // JSON errors  
                   returnString = "JSON failed; " + ex.getMessage();  
               }  
               return returnString;
           }  

           private static String convertStreamToString(InputStream is) {  
               /* 
                * To convert the InputStream to String we use the BufferedReader.readLine() 
                * method. We iterate until the BufferedReader return null which means 
                * there's no more data to read. Each line will appended to a StringBuilder 
                * and returned as String. 
                */  
               BufferedReader reader = new BufferedReader(new InputStreamReader(is));  
               StringBuilder sb = new StringBuilder();  

               String line = null;  
               try {  
                   while ((line = reader.readLine()) != null) {  
                       sb.append(line + "\n");  
                   }  
               } catch (IOException e) {  
                   e.printStackTrace();  
               } finally {  
                   try {  
                       is.close();  
                   } catch (IOException e) {  
                       e.printStackTrace();  
                   }  
               }  
               return sb.toString();  
           } }

这可能是什么错误?

请帮忙。

谢谢。

I got a code for connecting the web page but it shows always

"Connection failed; Host is
unresolved: www.streetcar.org:80"

The code is as follows.

package myapp.httpdwnd;

import android.app.Activity;
import java.io.InputStream;  
import android.os.Bundle;  
import android.widget.LinearLayout;  
import android.widget.TextView;  
import java.io.IOException;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.client.HttpClient;  
import org.apache.http.client.methods.HttpGet;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.json.JSONArray;  
import org.json.JSONException;  
import org.json.JSONObject;  


public class httpdwndActivity extends Activity
{
      TextView txt;  

  @Override
  public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
     LinearLayout rootLayout = new LinearLayout(getApplicationContext());  
             txt = new TextView(getApplicationContext());  
             rootLayout.addView(txt);  
             setContentView(rootLayout);
               txt.setText("Connecting...");  
                      txt.setText(connect("http://www.streetcar.org/mim/cable/images/cable-01.jpg")); 
  }

    private String connect(String url){  

               // Create the httpclient  
               HttpClient httpclient = new DefaultHttpClient();  

               // Prepare a request object  
               HttpGet httpget = new HttpGet(url);   

               // Execute the request  
               HttpResponse response;  

               // return string  
               String returnString = null;  

               try {  

                   // Open the webpage.  
                   response = httpclient.execute(httpget);  

                   if(response.getStatusLine().getStatusCode() == 200){  
                       // Connection was established. Get the content.   

                       HttpEntity entity = response.getEntity();  
                       // If the response does not enclose an entity, there is no need  
                       // to worry about connection release  

                       if (entity != null) {  
                           // A Simple JSON Response Read  
                           InputStream instream = entity.getContent();  

                           // Load the requested page converted to a string into a JSONObject.  
                           JSONObject myAwway = new JSONObject(convertStreamToString(instream));  

                           // Get the query value'  
                           String query = myAwway.getString("query");  

                           // Make array of the suggestions  
                           JSONArray suggestions = myAwway.getJSONArray("suggestions");  

                           // Build the return string.  
                           returnString = "Found: " + suggestions.length() + " locations for " + query;  
                           for (int i = 0; i < suggestions.length(); i++) {  
                               returnString += "\n\t" + suggestions.getString(i);  
                           }  

                           // Close the stream.  
                           instream.close();  
                       }  
                   }  
                   else {  
                       // code here for a response other than 200.  A response 200 means the webpage was ok  
                       // Other codes include 404 - not found, 301 - redirect etc...  
                      // Display the response line.  
                       returnString = "Unable to load page - " + response.getStatusLine();  
                   }  
               }  
               catch (IOException  ex) {  
                   // thrown by line 80 - getContent();  
                   // Connection was not established  
                  returnString = "Connection failed; " + ex.getMessage();  
               }  
               catch (JSONException ex){  
                   // JSON errors  
                   returnString = "JSON failed; " + ex.getMessage();  
               }  
               return returnString;
           }  

           private static String convertStreamToString(InputStream is) {  
               /* 
                * To convert the InputStream to String we use the BufferedReader.readLine() 
                * method. We iterate until the BufferedReader return null which means 
                * there's no more data to read. Each line will appended to a StringBuilder 
                * and returned as String. 
                */  
               BufferedReader reader = new BufferedReader(new InputStreamReader(is));  
               StringBuilder sb = new StringBuilder();  

               String line = null;  
               try {  
                   while ((line = reader.readLine()) != null) {  
                       sb.append(line + "\n");  
                   }  
               } catch (IOException e) {  
                   e.printStackTrace();  
               } finally {  
                   try {  
                       is.close();  
                   } catch (IOException e) {  
                       e.printStackTrace();  
                   }  
               }  
               return sb.toString();  
           } }

What may be the mistake in this?

Please help.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

书间行客 2024-09-19 02:42:24

可能是因为“主机无法识别”,因此引发了UnknownHostException

浏览此页面:http://developer.android.com/reference/java/net/UnknownHostException.html#UnknownHostException%28%29

检查AndroidMenifest.xml 文件中的“Internet”权限,如果您尚未添加,请添加以下内容:

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

It may be becoz of "Host is not recognized" and hence UnknownHostException is raised..

Go through this Page : http://developer.android.com/reference/java/net/UnknownHostException.html#UnknownHostException%28%29

OR

check about the "Internet" permission in your AndroidMenifest.xml file, if you haven't added then add the following:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
So尛奶瓶 2024-09-19 02:42:24

“主机未解析”意味着您的服务器的 DNS 查找失败。在模拟器中,这可能意味着您没有互联网连接 - 请查看其他应用程序(例如浏览器)是否工作。另外,查看浏览器应用程序是否可以访问 www.streetcar.org。

"Host is unresolved" means the DNS lookup for your server failed. In the emulator, this may mean that you do not have an Internet connection -- see if other applications (e.g., Browser) work. Also, see if the Browser app can get to www.streetcar.org.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文