2014-04-05 2 views
-1
try { 
    URL myURL = new URL("myURL that works fine on browser"); 
    URLConnection myURLConnection = myURL.openConnection(); 
    myURLConnection.connect(); 
} catch (MalformedURLException e) { 
    // new URL() failed 
    // ... 
} catch (IOException e) { 
    // openConnection() failed 
    // ... 
} 

으로이 간단한 HIT이는 this의 중복입니다안드로이드 어떻게 URL을 누르십니까? 내가 원하는대로 밖으로 개방 브라우저

04-05 17:18:41.687: E/AndroidRuntime(11568): FATAL EXCEPTION: main 
04-05 17:18:41.687: E/AndroidRuntime(11568): android.os.NetworkOnMainThreadException 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at java.net.InetAddress.lookupHostByName(InetAddress.java:410) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:241) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at java.net.InetAddress.getAllByName(InetAddress.java:219) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at com.leeway.hdwallpaper.Test_My_Paging_Activity$1.onClick(Test_My_Paging_Activity.java:89) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.view.View.performClick(View.java:4171) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.view.View$PerformClick.run(View.java:17195) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.os.Handler.handleCallback(Handler.java:643) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.os.Looper.loop(Looper.java:137) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at android.app.ActivityThread.main(ActivityThread.java:4803) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at java.lang.reflect.Method.invoke(Method.java:511) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
04-05 17:18:41.687: E/AndroidRuntime(11568): at dalvik.system.NativeStart.main(Native Method) 

같은 eroor 더 AsyncTask를하거나 AsyncTask

+0

구문 분석 또는 비동기 작업을 사용하지 않음 – Android

+0

'AsyncTask' 또는 일부 백그라운드 스레드를 사용해야합니다. 스택 트레이스를보고,'NetworkOnMainThreadException'을보고, 중복 된 질문과 그 대답을 읽음으로써 알 수 있습니다. 중복 질문은 왜'NetworkOnMainThreadException'을 얻는 지에 대한 이유와이를 다루는 방법을 다루기 때문에 중복됩니다. 실제로 질문과 답변을 읽음으로써이를 알 수 있습니다. – CommonsWare

+0

AsyncTask를 사용하지 않는 이유는 무엇입니까? 트랜잭션 중간에서 연결이 잘못되면 UI 스레드가 멈추는 것을 방지하기위한 예방 조치입니다. –

답변

0

사용을 구문 분석을 줘 없습니다. 정적 인 내부 클래스로 만들 수도 있고, 완전한 자체 클래스로 만들 수도 있습니다. try/catch 등을 추가해야하지만 정상적으로 작동합니다.

URL myURL = new URL("myURL that works fine on browser"); 
new UrlPinger(myUrl).execute(); 

class UrlPinger extends AsyncTask<URL,Void,Void> { 
    @Override 
    protected Void doInBackground (URL ... urls) { 
     URLConnection myURLConnection = urls[0].openConnection(); 
     myURLConnection.connect(); 
     return null; 
    } 
} 
+0

openConnection URLConnection에서 openConnection 메서드를 가져 오지 못합니다. myURLConnection = urls [0] .openConnection(); – Android

+0

캡'URL'을 잊어 버렸습니다 ... – PearsonArtPhoto

+0

당신은 그것을 설명 할 수 있습니까? 이해할 수 없다 – Android

관련 문제