2016-11-04 5 views
0

나는 프로그램을 작성하고 mysql에 연결했다. 나는 웹 서비스 클래스 및 사용하여 HTTP 클라이언트를 작성했습니다,하지만 난 런타임 오류가, 내 코드를 확인하십시오 :Error : WebService에 연결할 때

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 

public class WebService { 
    public static String readUrl(String url) { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     try { 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      InputStream inputStream = httpResponse.getEntity().getContent(); 
      String result = convertInputStreamToString(inputStream); 
      return result; 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    private static String convertInputStreamToString(InputStream inputStream) { 
     try { 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
      StringBuilder stringBuilder = new StringBuilder(); 

      String line = ""; 
      while ((line = bufferedReader.readLine()) != null) { 
       stringBuilder.append(line); 
      } 
      return stringBuilder.toString(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 


    String result = WebService.readUrl("http://localhost/note-server/"); 
    if (result != null) { 
     try { 
      JSONArray tasks = new JSONArray(result); 
      for(int i=0;i<tasks.length();i++){ 
       JSONObject task=tasks.getJSONObject(i); 
       Log.i("L",task.getString("task tilte")); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    } 

을 여기에 내가 가지고있는 오류 코드 :

at com.example.parisa.noteapplication.WebService.read Url(WebService.java:26) 


at com.example.parisa.noteapplication.MainActivity.on Create(MainActivity.java:47) 


    FATAL EXCEPTION: main 
    Process: com.example.parisa.noteapplication, PID: 29346 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.parisa.noteapplication/com.example.parisa.noteapplication.MainActivity}: android.os.NetworkOnMainThreadException 
    at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2462) 

가와 여기

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 


    String result = WebService.readUrl("http://localhost/note-server/"); 
    if (result != null) { 
     try { 
      JSONArray tasks = new JSONArray(result); 
      for(int i=0;i<tasks.length();i++){ 
       JSONObject task=tasks.getJSONObject(i); 
       Log.i("L",task.getString("task tilte")); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

    } 
+0

당신은 NetworkOnMainThreadException 볼 수 [해결하는 방법 android.os.NetworkOnMainThreadException?] (http://stackoverflow.com/questions/6343166/how-to-fix-android-os- networkonmainthreadexception) – peko

+0

별도의 스레드에 websevice를 추가하십시오. 해당 사용자 AsyncTask 클래스 –

답변

0

당신은 별도로 스레드에서이 readurl 방법을 실행해야

웹 서비스와 관련하여 urlthread를 사용할 수 없습니다. 사전에

덕분에