마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드6.0 import org.apache.http. 질문

0 추천
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;

 

 

private class SendPost extends AsyncTask<Void, Void, String> {
        protected String doInBackground(Void... unused) {
            String content = executeClient(registrationId);
            return content;
        }
        public String executeClient(String registrationId) {
            @SuppressWarnings("deprecation")
            ArrayList<NameValuePair> post = new ArrayList<NameValuePair>();
            post.add(new BasicNameValuePair("subject", registrationId));
            post.add(new BasicNameValuePair("content", "content"));
            HttpClient client = new DefaultHttpClient();
            
            HttpParams params = client.getParams();
            HttpConnectionParams.setConnectionTimeout(params, 100000);
            HttpConnectionParams.setSoTimeout(params, 100000);
            
            HttpPost httpPost = new HttpPost("http://~~~~");
            
            try {
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(post, "UTF-8");
                httpPost.setEntity(entity);
                client.execute(httpPost);
                return EntityUtils.getContentCharSet(entity);
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
}

 

 

흔히 있는 http통신 예제입니다. 이클립스를 통해 개발 진행하고 있는데요

이게 최신 마시멜로 버젼에서는 해당 apache.http 관련 import가 진행되지 않아서

통신이 안되는데

"$SDK_HOME/platforms/android-23/optional/org.apache.http.legacy.jar 파일을 libs 폴더에 복사해 넣으세요"

익명의 분이 이걸 넣으라는데 넣어도 변화가 없어요.

어떻게 저 legacy.jar 파일을 사용하라는건지 알려주실분을 찾습니다.

또는 다른방법으로

이클립스 툴 마시멜로 버젼에서 http통신을 하려고 하면 어떻게 해야 하나요?
어려버영 (510 포인트) 님이 2016년 2월 5일 질문

1개의 답변

0 추천

libs폴더에 넣으면 되어야 하는게 정상인데. 폴더가 잘 못 되었거나 파일이 잘 못 되었거나, 프로젝트에서 변경 사항을 바로 인식 못해서 발생하는 현상으로 보입니다. 

 

우선  클린 빌드 해 보시고,

 그래도 안되면 프로젝트 탐색창에서 마우스 오른쪽 버튼을 누르면 나오는 창에서 Properties를 선택 하야 Properties 창을 띄운 후 Java Build Path -> Libraries -> Add JARs -> org.apache.http.legacy.jar  선택 후 확인을 눌러 명시적으로 사용하게 설정 해 보세요.

 

이외 23 미만 SDK를 사용하여 빌드하더라도 마시멜로 단말에서 동작 하긴 합니다.

 

 

익명사용자 님이 2016년 2월 5일 답변
감사합니다. 해결되었습니다.
...