안드로이드 개발 질문/답변
(글 수 45,052)
public void setJSONFromUrl("String url, List<NameValuePair> params) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params,"EUC-KR"));
httpClient.execute(httpPost);
} catch (IOException e) {
e.printStackTrace();
}
}
현재 이러한 함수를 만들어서 웹서버의 php로 데이터를 넘겨 실행 시키고 있습니다..
하지만 실제 안드로이드에서는 데이터만 넘겨주고 넘어가야되는데 서버에서 php가 전부 실행 될 때 까지
기다리는것 같더라고요..
httpClient.execute(httpPost); 에서 리턴값을 기다리는 것 같은데 리턴값을 받지 않고 실행만 시키는 법은 없나요??
2012.12.18 11:05:50
저도 궁금하네요. 아래 처럼 함수 사용하고 있는데요.
HttpResponse response = httpClient.execute(httpPost);
return 시간이 7~8초 되요. local server 사용하고 있고, brower 에서 하면 1초만에 값을 보여주는데..
사용하는 HttpPost 하는 url 이 전부 달라서 미리 연결 시켜 놓을 수도 없고...
좋은 방법이 있을까요?
2012.12.18 11:36:58
HttpClient client = new DefaultHttpClient();
String url = "http://localhost/test/servlet/MainServlet?protocolName=b_list";
HttpPost httpPost = new HttpPost(url);
String url = "http://localhost/test/servlet/MainServlet?protocolName=b_list";
HttpPost httpPost = new HttpPost(url);
HttpResponse response = client.execute(httpPost);
이런식으로 받는데요. 보내는 데이터는 없습니다. 위에 url은 해당페이지는 자체에서 json text 형태를 만들어 줍니다.
json text 를 만드는시간이 오래걸리는 것은 아닌 것을 서버단에서 확인했어요.
client.execute(httpPost); 이것만 호출하면 7~8초 걸리네요.




저녀석이 아마 블로킹 함수일겁니다.
어짜피 스래드에서 실행되니 핸들러 하나 만들어 놓고 할일 다 하고나면 핸들러로 메세지 날리라고 해서
처리하시면 무난하게 처리되지 않나요 ~_~??