import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import android.util.Log;
public class GetPostEx {
public String getInternetData() throws Exception{
//String source_prog;
//int lang_number;
//BufferedReader in = null;
String ret=null;
try{
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("Some server link");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
nameValuePairs.add(new BasicNameValuePair("source", "print 1"));
nameValuePairs.add(new BasicNameValuePair("lang", "5"));
nameValuePairs.add(new BasicNameValuePair("testcases", "[\"1\"]"));
nameValuePairs.add(new BasicNameValuePair("api_key", "Some key"));
request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.e("error", "before HTTPResponse");
HttpResponse response = client.execute(request);
Log.e("error", "Aftr HTTPResponse");
ret = EntityUtils.toString(response.getEntity());
}catch (Exception e){
//Log.e("error","error!!");
e.printStackTrace();
}
return ret;
}
}
그리고 난 내 GetPostEx 클래스를 호출 오전 곳에서 다른 활동 (AndroidHTTPRequestsActivity)에 사용되는 코드는 다음과 같습니다 - 나는 서버에서 일부 HTTP 응답을 필요로 안드로이드 응용 프로그램을 만들려고 노력하고HttpResponse response = client.execute (request) 행 다음에 furthur 실행이 중단되는 이유는 무엇입니까?
GetPostEx test = new GetPostEx();
try{
returned = test.getInternetData();
} catch(Exception e){
Log.e("error", "yo") ;
e.printStackTrace();
}
API를 사용하여. 이것은 내 HTTP 응답을 얻기위한 코드입니다.하지만 실행 후 실행이 중지됩니다. HttpResponse response = client.execute (request); logcat은이 행 다음에 오류가 표시되지만 위 행은 오류가 표시됩니다. 나는 그 이유를 알 수 없다.
12 ~ 22 14 : 18 : 58.658 : E/오류 (1335) : HttpResponse에
12 ~ 22 14시 18분 전 - :
다음 줄
는 로그 캣에서 스택 추적 정보입니다 : 59.448 : W/System.err (1335) : android.os.NetworkOnMainThreadException12-22 14 : 18 : 59.448 : W/System.err (1335) : android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork StrictMode.java:1145)
12-22 14:18:59 .458 : W/System.err (1335) : java.net.InetAddress.lookupHostByName (InetAddress.java:385)
12-22 14 : 18 : 59.458 : W/System.err (1335) : at java.net.InetAddress.getAllByNameImpl (InetAddress.java:236)
12-22 14 : 18 : 59.458 : java.net.InetAddress.getAllByName에서 (InetAddress.java:214 (1335)를 System.err/W)
12-22 14 : 18 : 59.458 (1335)를 System.err/W : org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection (DefaultClientConnectionOperator.java:137 AT)
12 22 14 : 18 : 59.458 : System.err (1335) : org.apache.htt에서 p.impl.conn.AbstractPoolEntry.open (AbstractPoolEntry.java:164)
12-22 14 : 18 : 59.458 : System.err에/W (1335)에 org.apache.http.impl.conn.AbstractPooledConnAdapter .open (AbstractPooledConnAdapter.java:119)
12-22 14 : 18 : 59.478 : W/System.err (1335) : org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java : 360)
12-22 14 : 18 : 59.478 :) 1,335 (System.err에/W : org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:555)에서
12 -22 14 : 18 : 59.478 : W/System.err (1335) : org. apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:487)
12-22 14 : 18 : 59.478 : W/System.err (1335) : org.apache.http.impl.client .AbstractHttpClient.execute (AbstractHttpClient.java:465)
12-22 14 : 18 : 59.478 : W/System.err (1335) : com.us.onlinecompilr.GetPostEx.getInternetData (GetPostEx.java:37)
12-22 14 : 18 : 59.478 : W/System.err (1335) : com.us.onlinecompilr.AndroidHTTPRequestsActivity.onCreate (AndroidHTTPRequestsActivity.자바 29)
12-22 14 : 18 : 59.478 :) 1,335 (System.err에/W : android.app.Activity.performCreate (Activity.java:5243)에서
12-22 14 : 18 : 59.478 : W/System.err (1335) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)
12-22 14 : 18 : 59.478 : W/System.err (1335) : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2140)에서
12-22 14 : 18 : 59.488 : android.app.ActivityThread.handleLaunchActivity에서 (ActivityThread.java : System.err에 (1335)/W : 2226)
,515,12-22 14 : 18 : 59.488 : android.app.ActivityThread.access $ 700 (ActivityThread.java:135)
12-22 14 : 18 : 59.488를 System.err (1335)/W : W/System.err (1335) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1397)
12-22 14 : 18 : 59.488 : W/System.err (1335) : android (Handler.java:102)
12-22 14 : 18 : 59.488 : W/System.err
12-22 14 : 18 : 59.488 : W/System.err (133 5) : android.app.ActivityThread.main (ActivityThread.java : 4998)
12-22 14 : 18 : 59.488 : W/System.err (1335) : java.lang.reflect.Method.invokeNative에서 (원시 메소드)
12-22 14 : 18 : 59.488 : System.err에/W (1335) : java.lang.reflect.Method.invoke (Method.java:515)에서
12-22 14 : 18 : 59.488 : W/System.err (1335) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:777)
12-22 14 : 18 : 59.488 : W /System.err(1335) : at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:593)
12-22 14 : 18 : 59.488 :
12-22 14 dalvik.system.NativeStart.main (원시 메소드)에서 : 18 : System.err에 (1335)/W 59.588 : I/안무가 (1335) : 641 프레임을 건너 뜁니다! 응용 프로그램이 주 스레드에서 너무 많은 작업을하고있을 수 있습니다.
12-22 14 : 19 : 03.278 : I/Choreographer (1335) : 33 프레임 건너 뛰기! 응용 프로그램이 주 스레드에서 너무 많은 작업을하고있을 수 있습니다.
12-22 14 : 19 : 06.188 : I/Choreographer (1335) : 112 frames 건너 뛰기! 응용 프로그램이 주 스레드에서 너무 많은 작업을하고있을 수 있습니다.
시도 내가 유 말했듯이 코드를 수정하고 또한 스택 추적 정보를 준 너무 – Rohit5k2
아니라 catch 블록을 넣어이 http://developer.android.com/reference/android/os/AsyncTask.html
또 다른 좋은 예입니다 참조하십시오. –
문제는 메인 스레드에서 네트워크 호출을하는 것입니다. AsyncTask를 사용하여 네트워크 호출. 당신이 오류를 참조하십시오 2-22 14 : 18 : 59.448 : System.err (1335) : android.os.NetworkOnMainThreadException – Rohit5k2