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

HttpUrlConnection 방식으로 Json 문서에 Post 송신 후 받아오는 과정에서 출력이 안됩니다..

0 추천

private class phpDown extends AsyncTask<String, Integer, String> {=
        @Override
        protected String doInBackground(String... urls) {
            StringBuilder jsonHtml = new StringBuilder();
            String Genre = "Ballad";
            try {
                // 연결 url 설정
                URL url = new URL(urls[0]);
                // 커넥션 객체 생성
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                // 연결되었으면.
                if (conn != null) {
                    conn.setConnectTimeout(10000);
                    conn.setUseCaches(false);
                    conn.connect();
                    conn.setRequestMethod("POST");
                    conn.setDoOutput(true);
                    conn.setRequestProperty("Cache-Control", "no-cache");
                    conn.setRequestProperty("Content-Type", "application/json");
                    conn.setRequestProperty("Accept", "application/json");
                    OutputStream os = conn.getOutputStream();
                    os.write(Genre.getBytes("UTF-8") );
                    os.flush();

                    // 연결되었음 코드가 리턴되면.
                    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
                        for (; ; ) {
                            // 웹상에 보여지는 텍스트를 라인단위로 읽어 저장.
                            String line = br.readLine();
                            if (line == null) break;
                            // 저장된 텍스트 라인을 jsonHtml에 붙여넣음
                            jsonHtml.append(line + "\n");
                        }
                        br.close();
                    }
                    conn.disconnect();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return jsonHtml.toString();
        }

 

안드로이드에서 특정 값을 송신하여 mysql 상에서 그에 부합하는 값만 다시 안드로이드로 파싱하고자 합니다.

근데 안드로이드에서 post 방식으로 값을 넘기고자 구문을 작성했는데(파란글씨 부분) 맞는지 모르겠습니다

   session_start();
 
   $Genre = $_POST['Genre'];
   
   // 쿼리문 생성
   $sql = "select * from musiclist WHERE Genre = '$Genre'";

이건 php문서에 안드로이드에서 송신한 데이터를 받아오는 과정으로 작성했습니다

 

$Genre = $_POST['Genre']; 이 부분이 빠지면 제대로 잘 받아오는데 필수요소인 이 부분에서 오류가 나는걸 보아하니 송신하는 과정에서 단단히 잘못된 것 같은데 안드로이드에서 post 송신 부분을 어떻게 고쳐야할 지 모르겠습니다..

boolks (240 포인트) 님이 2016년 10월 16일 질문

1개의 답변

+1 추천

안드로이드에서 포스트 할 때 사용한 Genre 는 안드로이드 코드의 변수입니다. 님이 넘긴건 Genre.getBytes("UTF-8")  이지  http://server?Genre=your_genre가 아닙니다. 님이 명시적으로 Genre라는 키값을 주지않는 한 자동으로 http request에 Genere라는 키로 요청값을 매핑해주지는 않습니다.

spark (226,720 포인트) 님이 2016년 10월 16일 답변
아 감사합니다 변수값을 그대로 전달해버렸나보군요..
조금 찾아보고 바꿨는데 접근방법이
StringBuffer buffer = new StringBuffer();
                    buffer.append("Genre").append("=").append("Ballad");
                    OutputStreamWriter os = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
                    os.write(buffer.toString());

이런식인지 잘 모르겠네요 실행은 역시 오류가 나는데 혹시 염치불구하고 접근방법좀 부탁드릴 수 있을까요?
지금 요청을 application/json 타입으로 하고 계시네요. JSON 포맷으로 전송해 보세요.
해결했습니다 감사합니다!!
...