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

안드로이드 <-> php//변수 전달하고 데이터 받기

0 추천
몇일동안 골머리 앓은 문제의 원인을 찾았는데 해결방법이 도무지 떠오르지 않아서 질문올립니다

컨텐츠를 제목을 클릭했을때 해당 컨텐츠 내용을 데이터베이스에서 꺼내오려하는데

제가생각한 방식은 안드로이드에서 컨텐츠번호 (ex : 1983) 를 php 에 보내서

그에 맞는 자료내용을 php를 통해 DB에서 찾아서 다시 php 를 통해 안드로이드로 JSON 형식으로 자료를 보내주는 겁니다.

Send_content_no = new Send_content_no ( );// 컨텐츠 번호 php 보내기
Send_content_no.execute();//컨텐츠 번호 php 보내기

gPHP = new GettingPHP(); // php 받는거
gPHP.execute(url); // php 받는거
 private class Send_content_no extends AsyncTask<String, Void, String> {

        String sResult;

        @Override
        protected String doInBackground(String... sId) {
            sResult = "NO";

            try {
                String body = "no_content=" + content_no;
                URL u = new URL("주소주소");
                HttpURLConnection huc = (HttpURLConnection) u.openConnection();
                huc.setReadTimeout(4000);
                huc.setConnectTimeout(4000);
                huc.setRequestMethod("POST");
                huc.setDoInput(true);
                huc.setDoOutput(true);
                huc.setRequestProperty("utf-8", "application/x-www-form-urlencoded");
                OutputStream os = huc.getOutputStream();
                os.write(body.getBytes("utf-8"));
                os.flush();
                os.close();

                BufferedReader is = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));
                int ch;
                StringBuffer sb = new StringBuffer();
                while ((ch = is.read()) != -1) {
                    sb.append((char) ch);
                }
                if (is != null) {
                    is.close();
                }

                sResult = sb.toString();

            } catch (Exception e) {
            }
            return sResult;
        }
    }

 

class GettingPHP extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... params) {
        StringBuilder jsonHtml = new StringBuilder();
        try {
            URL phpUrl = new URL(params[0]);
            HttpURLConnection conn = (HttpURLConnection) phpUrl.openConnection();

            if (conn != null) {
                conn.setConnectTimeout(10000);
                conn.setUseCaches(false);

                if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    while (true) {
                        String line = br.readLine();

                        if (line == null)
                            break;
                        jsonHtml.append(line + "\n");

                    }
                    br.close();
                }
                conn.disconnect();

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return jsonHtml.toString();

    }

        protected void onPostExecute(String str) {

            try {

                // PHP에서 받아온 JSON 데이터를 JSON오브젝트로 변환

                JSONObject jObject = new JSONObject(str);
                // results라는 key는 JSON배열로 되어있다.

                JSONArray results = jObject.getJSONArray("little_known");

                ArrayList<post_data> data=new ArrayList<>(); // 여기 주의 앞에 ArrayList 되야한다
                for ( int i = 0; i < results.length(); i++ ) {
                    JSONObject temp = results.getJSONObject(i);
                    post_thum = temp.getString("post_content"); //게시글 썸네일 and php 에 등록한 키

 

                        Log.d("ok2",post_thum);

                        post_data[] item=new post_data[i+1];
                        item[i]=new post_data(post_thum , "아이고","의미","없다"); //얘도 포스터데이터 얻어어고있다.이미지만 구해오면 되니 뒤에 3개는 무의미

                        data.add(item[i]);
                    // 갯수를 딱 맞춰야함
                    post_content_adapter adapter=new post_content_adapter(getApplicationContext(),R.layout.post_content_list,data);
                    listview.setAdapter(adapter);

 

                }

 

 

 

            } catch (JSONException e) {
                e.printStackTrace();

            }
        }
    }

아래는 php 입니다.
$regsqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);

$c_no = $_POST['no_content']; //컨텐츠 번호

$Re = array();

$res = mysqli_query($regsqli,"select object_id from wp_term_relationships where term_taxonomy_id
LIKE '13'");

$res2 = mysqli_query($regsqli,"select guid from wp_posts where post_parent
LIKE '."$c_no".' and post_type LIKE 'attachment' ");

 

while($result2 = mysqli_fetch_array($res2)){

 array_push($Re,  
    array('post_content'=>$result2[0]
    ));
    }

 

 

echo json_encode(array("little_known"=>$Re));
//끝

이렇게해보니까 값을 못가져오는데 이것저것 시도해보니까 컨텐츠 번호 보내는 메서드 한번 자료 받는 메서드 한번
둘다 따로 놀러라고요  php를 두번 참조하게 되니까 첫번째에 번호를 전달해도 두번째 참고때는 받을수가 없는.. $c_no가 빈값이 되더라고요..
다른 방법이 없을까요?? 저 두 메서드를 합치는게 가장 이상적일것같은데 그게 가능한가요??
껄껄앱 (1,910 포인트) 님이 2016년 4월 25일 질문

1개의 답변

0 추천
보낼때 get으로 보내고 받을때 post로 받네요
익명사용자 님이 2016년 4월 26일 답변
...