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

php 와 안드로이드 연동 (자료전달)

0 추천
안녕하세요 ^^

php를 이용해 자바에서 컨텐츠를 받아오려합니다. 전체적인 구성은 안드로이드에서 컨텐츠 번호가 저장되는 변수를 post로 php 로 보내서 php 가 데이터 베이스에서 해당하는 자료들을 JSON으로 변환해 다시 안드로이드로 보내주는 방식입니다.

근데 안드로이드에서 보면 아무 자료도 받아오질 못합니다. 예를 들어 $content_no 대신에 305 라는 컨텐츠 번호를 집어넣으면 해당 자료를 잘 받아옵니다. (때문에 안드로이드엔 이상이 없다고 생각합니다)

변수가 제대로 POST 되지 않나 싶어서
$zz = mysqli_query($regsqli,"insert into Regid (regid) values ('$content_no')");  도 같이 집어넣어봤는데
데이터베이스에 해당 변수에 담긴 자료가 잘 저장됩니다;

대체 왜 그런거죠?

<?
// define('__XE__', true);
 
$DB['host'] = 'localhost';
$DB['db'] = '디비';
$DB['id'] = '아이디';
$DB['pw'] = '아이디';
 
$regsqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
 
$Re = array();  
 
$content_no = $_POST['content_no'];  
 
 
$res = mysqli_query($regsqli,"select object_id from wp_term_relationships where term_taxonomy_id
LIKE '13'");
 
$Re = array();
 
//$zz = mysqli_query($regsqli,"insert into Regid (regid) values ('$content_no')");    
 
$res4 = mysqli_query($regsqli,"select guid from wp_posts where post_parent
LIKE $content_no and post_type LIKE 'attachment' ");
 
 
 
while($result4 = mysqli_fetch_array($res4)){
 
 array_push($Re,  
    array('post_content'=>$result4[0]
    ));
  }
 
 
 
 
 
echo json_encode(array("little_known"=>$Re));
//끝
 
 
 
 
?>

 

 

 

아래는 안드로이드 코드입니다.

  private void insertToDatabase(String content_no){

        class InsertData extends AsyncTask<String, Void, String>{

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);

                gPHP = new GettingPHP(); // php 받는거
                gPHP.execute(url); // php 받는거
            }

            @Override
            protected String doInBackground(String... params) {

                try{
                    String content_no = (String)params[0];

                    String link=url;
                    String data  = URLEncoder.encode("content_no", "UTF-8") + "=" + URLEncoder.encode(content_no, "UTF-8");

                    URL url = new URL(link);
                    URLConnection conn = url.openConnection();

                    conn.setDoOutput(true);
                    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

                    wr.write( data );
                    wr.flush();

                    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

                    StringBuilder sb = new StringBuilder();
                    String line = null;

                    // Read Server Response
                    while((line = reader.readLine()) != null)
                    {
                        sb.append(line);
                        break;
                    }
                    return sb.toString();
                }
                catch(Exception e){
                    return ("Exception: " + e.getMessage());
                }

            }
        }

        InsertData task = new InsertData();
        task.execute(content_no);
        Log.d("ok8", content_no);
    }

 

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();
        }
        Log.d("ok3",content_no);
        return jsonHtml.toString();

    }

 

 

        protected void onPostExecute(String str) {
            Log.d("ok4",content_no);
            try {

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

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

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

                Log.d("ok5",content_no);
                List<post_data> items=new ArrayList<>();
                for ( int i = 0; i < results.length(); i++ ) {
                    Log.d("ok6", content_no);
                    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 , "ㅎㅎ..ㅈㅅ;;..ㅋㅋ");

                        items.add(item[i]);
                    // 갯수를 딱 맞춰야함
                    recyclerView.setAdapter(new post_list_thum(getApplicationContext(), items, R.layout.post_little_known));

                }

                Log.d("ok7",content_no);

 

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

            }
        }
    }

 

}
껄껄앱 (1,910 포인트) 님이 2016년 4월 20일 질문

1개의 답변

0 추천

http://ibabo.tistory.com/266

request method 를 post 로 지정해보세요 

http://developer.android.com/intl/ko/reference/java/net/HttpURLConnection.html

HttpURLConnection uses the GET method by default. 

aucd29 (218,390 포인트) 님이 2016년 4월 20일 답변
...