Не подключается к веб-странице на Android - PullRequest
1 голос
/ 28 июля 2010

Я получил код для подключения веб-страницы, но он всегда показывает

"Соединение не удалось; Хост не разрешен: 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();  
           } }

В чем может быть ошибка в этом?

Пожалуйста, помогите.

Спасибо.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Это может быть потому, что "Хост не распознан" и, следовательно, UnknownHostException повышен.

Перейти на эту страницу: http://developer.android.com/reference/java/net/UnknownHostException.html#UnknownHostException%28%29

ИЛИ

проверьте разрешение " Интернет " в файле AndroidMenifest.xml, если вы еще не добавили, добавьте следующее:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
0 голосов
/ 28 июля 2010

«Хост не разрешен» означает, что поиск DNS для вашего сервера завершился неудачно. В эмуляторе это может означать, что у вас нет подключения к Интернету - посмотрите, работают ли другие приложения (например, браузер). Также посмотрите, может ли приложение «Браузер» попасть на www.streetcar.org.

...