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

JSON 데이터를 PHP에서 받기

0 추천

 

안드로이드에서 JSON 데이터를 만들어서 php 로 보내는 방법을 테스트 중입니다.

그런데 php에서 값을 제대로 받는지 테크스 해보고 싶은데 아무리 인터넷을 찾아도 방법을 모르겠습니다.

 

아래는 안드로이드에서 php로 전달하는 코드입니다.

 

 

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

httppost.setEntity(new StringEntity(str));

 

httpclient.execute(httppost);

 

 

그리고, php로 post로 보낼때 대부분 HttpResponse 를 이용해서 리턴값을 무조건 받아오는 예제밖에 없던데...

제가 만들고 싶은건 그냥 값을 보내서 DB에 저장하고 끝입니다.

 

httpclient.execute(httppost); 

를  이용해서 보낼때 꼭 리턴값을 받아야 하나요?

 

 

휴... 몇일을 이것 때문에 고생했더니 너무 힘드네요 ㅠ.ㅠ

맛있다얍얍 (1,130 포인트) 님이 2013년 3월 18일 질문

2개의 답변

0 추천
음..

보통 리턴을 받는 이유는 서버로 전송이 성공적으로 완료되었는지를 알아야 하기 때문인데요.

만약 클라이언트에서 서버로 어떠한 데이터를 전송했는데 서버에서 제대로 DB에 저장을 못했다면

클라이언트에서는 서버로 재전송하거나 실패메세지를 띄우거나 해야겠죠.

 

php에서 값을 제대로 받는지를 테스트 해보고 싶으시다고 하셨는데

간단하게 php로 데이터를 보내고 php에서는 echo로 클라이언트에서받은 데이터를 그대로 내려주시면

아마 제대로 받는지를 확인하실 수 있으실것 같네요.
Bandroid (1,800 포인트) 님이 2013년 3월 18일 답변
죄송하지만 보낸 post 형태로 보낸 json 데이터를 php 에서 어떻게 받나요?

$input = file_get_contents('php://input', 1000000);
$value = $json->decode($input);
echo json_encode(value);

이렇게 테스트 해봤는데 에러가나고 죽어버립니다.
0 추천
무결성 체크(PHP에서 해당 로직을 처리할때 에러가 났는지 여부)를 하기 위해서는 리턴을 받는게 좋을텐데요.

PHP쪽에서 제대로 저장이 되었건 안되었건 상관없다면, 그냥 execute하시고 메소드 끝내버리시면 되죠.

뭘 고민하시는 건지를 모르겠네요.

 

PHP 입장에서 기본적으로 HTTP는 Request/Response의 한 쌍으로 이루어져있기때문에, 요청을 받으면 뭐라도 응답을 줘야합니다.
천도복숭아 (6,080 포인트) 님이 2013년 3월 18일 답변
public class HTTPCONNECTION {
    HttpResponse response;
       
    public String httpPost(String url, String str){
        try {
            Log.v("OWL", str);
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            httppost.setEntity(new StringEntity(str));
           
            //Log.v("OWL", EntityUtils.toString(httppost.getEntity()));
            Log.v("OWL", "Okay so far");                    
            response = httpclient.execute(httppost);
           
            Log.v("OWL", EntityUtils.toString(response.getEntity()));
            return response.getEntity().getContent().toString();
        }

        catch (ClientProtocolException e) {
            e.printStackTrace();
            return null;
        }
        catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

서버로 통신하는 부분 클래스인데 url과 json 형태의 string 값을 받아서 서버에 전달하는 코드입니다.

자바쪽은 맞는거 같은데 php 에서 _POST['json']으로 받아도 값을 못 받아 오는 것 같습니다.
올려주신 코드를 보면 post 파라미터가 아무것도 없는데요?
혹시 모르니 $_POST 말고 $_REQUEST 로 해보세요.
...