2013-05-06 1 views
1

웹 사이트에서 텍스트를 읽으려고합니다. 임 자습서를 사용하여. 여기 내 자바 여기웹 사이트에서 텍스트 읽기 (BufferedReader, InputStream) Android, Eclipse

package nl.liacs.team6.stapp; 
import java.io.BufferedReader; 
import java.io.InputStream; 
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.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.TextView; 

public class Jokes extends Activity { 

public void onCreate(Bundle savedInstanceState) { 

    try 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.jokes); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     //dit is t textview element, gevonden door id van de XML layout jokes 
     TextView myListView = (TextView)findViewById(R.id.netResult); 

     //proberen met internet te connecten 
     try{ 
      //maak nieuw client object 
      HttpClient httpclient = new DefaultHttpClient(); 

      //post to onze url, site is voorbeeld 
      HttpPost httppost = new HttpPost("http://ephemeraltech.com/demo/android_tutorial20.php"); 

      //voor post uit en get response 
      HttpResponse response = httpclient.execute(httppost); 

      //get message from response 
      HttpEntity entity = response.getEntity(); 

      //get content van message 
      InputStream webs = entity.getContent(); 

      //nu hebben we response, convert to string 

      try 
      { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(webs, "iso-8859-1"), 8); 

       //lees 1 lijn van text 
       myListView.setText(reader.readLine()); 
       //sluiten 
       webs.close(); 

      }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 

} 
catch(Exception e){ 
} 

}// onCreate 
}// Jokes 

의 코드가되는 XML 레이아웃

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:textIsSelectable="true" 
    android:id="@+id/netResult" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

이며, 예 내가 안드로이드 매니페스트

아무것도 권한을 추가 내가 실행할 때 나타납니다 그것

아무도 도와 줄 수 있습니까? 내가 여기에 잘못

05-06 10:39:15.501: W/NetworkManagementSocketTagger(887): setKernelCountSet(10012, 0) failed with errno -2 
05-06 10:39:16.371: I/ActivityManager(887): START {cmp=nl.liacs.team6.stapp/.Info} from pid 1488 
05-06 10:39:16.371: W/WindowManager(887): Failure taking screenshot for (180x300) to layer 21010 
05-06 10:39:16.660: I/ActivityManager(887): Displayed nl.liacs.team6.stapp/.Info: +267ms 

너무 감사 로그입니다 뭘 메신저 몰라요!

편집

public class Jokes extends Activity { 

public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.jokes); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     //dit is t textview element, gevonden door id van de XML layout jokes 
     TextView myListView = (TextView)findViewById(R.id.netResult); 
     new loadSomeStuff().execute(FILENAME);  
     }// onCreate 

public class loadSomeStuff extends AsyncTask<String, Integer, String>{ 

    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     //proberen met internet te connecten 
     try{ 
      //maak nieuw client object 
      HttpClient httpclient = new DefaultHttpClient(); 

      //post to onze url, site is voorbeeld 
      HttpPost httppost = new HttpPost("http://ephemeraltech.com/demo/android_tutorial20.php"); 

      //voor post uit en get response 
      HttpResponse response = httpclient.execute(httppost); 

      //get message from response 
      HttpEntity entity = response.getEntity(); 

      //get content van message 
      InputStream webs = entity.getContent(); 

      //nu hebben we response, convert to string 

      try 
      { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(webs, "iso-8859-1"), 8); 
       //dit is t textview element, gevonden door id van de XML layout jokes 
       TextView myListView = (TextView)findViewById(R.id.netResult); 
       //lees 1 lijn van text 
       myListView.setText(reader.readLine()); 
       //sluiten 
       webs.close(); 

      }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 
return null; 
} 
} 
} 

내가 메신저가 뭘 잘 모릅니다 무엇 모든게하는 사람이 도움이 여러분 모두 나를하지만 덕분에, 자사의 모든 새를 의미한다. 모든

+0

당신이 체크 한 날씨 응답이오고되지 않거나 사용하여 현재 비동기 작업을 호출 할 수 있습니다? 목록보기로 텍스트를 직접 설정하는 방법은 무엇입니까? 구문 분석하지 않고? 심지어 데이터의 유형과 크기를 모르는 채로 ??? –

+0

디버깅을 시도하셨습니까? 서버에서 오는 응답을 얻으려고 노력하십시오. –

답변

0

먼저

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

그런 다음 비동기 작업의 doinbackground 방법에 중 모든 네트워킹 코드를 삽입 스레드 또는에 명시하려면 다음 코드를 추가하십시오.

이렇게하면 문제가 해결됩니다.

당신은

new loadstuff.execute("url"); 

public class loadSomeStuff extends AsyncTask<String, Integer, String>{ 

    String result=null; 

    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     //proberen met internet te connecten 
     try{ 
      //maak nieuw client object 
      HttpClient httpclient = new DefaultHttpClient(); 

      //post to onze url, site is voorbeeld 
      HttpPost httppost = new HttpPost("http://ephemeraltech.com/demo/android_tutorial20.php"); 

      //voor post uit en get response 
      HttpResponse response = httpclient.execute(httppost); 

      //get message from response 
      HttpEntity entity = response.getEntity(); 

      //get content van message 
      InputStream webs = entity.getContent(); 

      //nu hebben we response, convert to string 

      try 
      { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(webs, "iso-8859-1"), 8); 

       //text view removed from here 
       result=reader.readline(); 

       //sluiten 
       webs.close(); 

      }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 
return null; 
} 

onPostExecute(){ 

      //declare your text view here & assign result to your text view. 
      myTextView.setText(result); 

    } 
} 
+0

고마워요, 많이하고 있어요.하지만 어떡 하지요? 원래 질문에서 내 코드를 편집했습니다. 먼저,이 새로운 클래스 loadSomeStuff을 가지고 있지만 파일 이름을 실행할 수 없습니다. 변수로 해결되면, 내가 뭘 넣을 까? 두 번째, 웹 사이트에서 텍스트를 읽고 싶습니다. asynctask에 대한 어떤 인수가 있습니까? (문자열, 정수, 문자열)이 맞습니까? 셋째, asynctask가 무언가를 반환한다는 것을 이해합니다. 어떻게 텍스트를 반환합니까? 다시 한 번 감사드립니다. – user2324010