2012-04-14 2 views
2

나는 사용자가 입력하는 웹 사이트, 내가 지금까지 가지고있는 코드에서 문자열의 HTML 소스를 얻으려고 다음과 같습니다읽기 HTML 소스는

public String getURLContent(String url) 
{ 
    try 
    { 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(url); 
     ResponseHandler<String> resHandler = new BasicResponseHandler(); 
     String page = httpClient.execute(httpGet, resHandler); 
     return page; 
    } 
    catch (ClientProtocolException e) 
    { 
     e.printStackTrace(); 
     return ""; 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
     return ""; 
    } 
} 

때마다 나는 이 문서를 실행하면 서버가 유효한 응답을 제공하지 못했음을 의미하는 두 번째 catch (IOException)가 발생합니다 ... "http : \ www.google.com \"과 같은 사이트에서이를 테스트하고 있습니다. 그들은 분명히 응답해야합니다

+0

android.permission.INTERNET과 같은 필수 권한을 추가 했습니까? – Jems

+0

나는이 하나의 허가만을 가지고있다 : 다른 사람들이 있습니까? – CHollman82

+0

이것이 실제로 귀하의 URL 인 경우 올바르지 않습니다. 'www'앞에 prolly 두 개의 슬래시가 필요합니다. – FoamyGuy

답변

1

코드는 정상입니다. http://www. [page] . [domain] 예 : http://www.google.com 그리고 (이 새로운 프로젝트 인 경우) 직전 AndroidManifest.xml

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

이 권한을 추가 : 붙여 반드시 전체 웹 사이트의 경로를 확인

<application android:label="@string/app_name"> 

전체 예 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="10"/> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:label="@string/app_name"> 
     <activity android:name="MyActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 
+0

감사합니다. 내 매니페스트가 정확히 이렇게 보입니다. 정확한 주소 (많은 시도를 했음)를 사용하고 있으며 올바르게 작동하지 않는 것으로 확신하며, httpClient.execute()를 호출하면 여전히 IOException으로 포착됩니다. .. 나는 코드가 옳았다는 말을 너희들이 들었으니 이제 내 머리카락을 꺼내고있다! – CHollman82

+0

디버거를 사용하고 변수 값을 확인하고 – deadfish

+0

단계로 가서 새 HttpGet에 웹 사이트 주소를 입력 해보십시오. (... 적어도 주소 웹 사이트는 문제가 아님을 확신합니다. – deadfish

1

전체 문자열로 사용자 지정 구문 분석을 수행하지 않으려면 HTML 구문 분석기 라이브러리를 사용하는 것이 좋습니다. HTML 클리너를 사용하여 here을 표시했습니다.

이렇게하면 모든 말이 당신을 위해 작동합니다.

+0

팁 주셔서 감사합니다! – CHollman82

+0

링크가 누락되어 답변을 편집했습니다. 미안 내 실수. ;) –