我有一个用于连接网页的代码,但始终显示


  “连接失败;主机是
  未解决: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();
           } }


这可能是什么错误?

请帮忙。

谢谢。

最佳答案

可能是因为“无法识别主机”,因此引发了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>

10-08 17:24