2011-07-04 5 views
1

여기에 같은 문제가있는 게시물이 몇 개 있지만 그 중 누구도 내 것이 아니라 게시물이므로 간단합니다.

저는 PHP에 익숙하지 않아 $_POST$_REQUEST 변수가 모두 비어 있음을 확인했습니다. apache_request_headers()을 사용하여 헤더를 가져올 수 있으며 헤더를 올바르게 볼 수 있습니다. 그냥 $_POST 변수가 비어 있습니다.

내 클라이언트가 Android 앱이며 게시물 메시지를 올바르게 생성 중입니다. 나는 그것을 테스트하기 위해 tcpdump를 사용했다. 또한 아파치 로그는 의도 된 PHP가 호출되었음을 보여줍니다. 나는 아파치 2.2.14와 PHP 5.2.12를 표준 설치로 사용한다. 특별한 것은 없다.

아무 이유없이 $_POST 변수가 비어 있다고 생각할 수 있습니까?

또한 코드에서 클래스를 사용하지 않습니다. 필요에 따라 다른 클래스의 함수를 호출하는 단순한 코드. 내가 다른 게시물을 보았 기 때문에 이것을 언급한다. $this->input->post()을 사용하라는 제안이 있지만 내 경우에는 가능하지 않다.

편집 : 아래의 Sean에게 감사드립니다. "Content-Type"이 제대로 설정되지 않아 실제 값이 PHP 코드에 도달하지 못했습니다. 이상하게도 빈 요청의 헤더는 내가 설정 한 것입니다. 왜 데이터가 제거 되었습니까?

+0

우리에게 덤프를 보여주세요. 나는 당신이 실제로 정확하게 헤더를 생성하지 않는다고 생각한다. – Brad

+2

$ _GET도 비어 있는지 확인 했습니까? – vascowhite

+0

@vascowhite :이 경우 $ _REQUEST도 비어 있지 않습니다. –

답변

3

Android 클라이언트가 POST에서 올바른 콘텐츠 유형을 보내고 있는지 확인하십시오. application/x-www-form-urlencoded으로 설정해야합니다.

 url = new URL("your URL"); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     connection.setRequestMethod("POST"); 
+0

Microsoft ASP.NET 응용 프로그램과 통신하는 iOS 응용 프로그램을 작성할 때 실제로이 동일한 문제가 발생했습니다. –

+0

당신이 옳습니다! 콘텐츠 유형이 잘못되었습니다.제대로 설정하면 효과가 있습니다. – user220201

1

먼저 서버가 301 '이동 영구 코드로 POST 데이터를 리디렉션하지 않는지 확인합니다. 이걸 확인하려면 로그 파일을여십시오. 잘 작동한다면 200 코드 (또는 최악의 경우 201)를보아야합니다. 서버 호출마다 POST 및 GET 코드가 생성됩니다. 둘 다 200인지 확인하십시오. GET 만 200이지만 POST가 301이면 서버가 어떤 이유로 리디렉션됩니다 (예 : http://mysite.com을 호출 중이지만 서버가 http://www.mysite.com으로 리디렉션).

당신은 안드로이드에 HttpPost를 사용하여이 같은 시도 안드로이드 반환 값없이 GET 테스트해야하는 경우 : 바르 GET 경우

HttpPost httppost = new HttpPost("http://www.mysite.com?somevarname=somevalue"); 
httpclient.execute(httppost); 

는 서버 측에서 파일을 작성 같은 일을 시도하거나 뭔가 존재합니다.

그러나 로그에 GET 및 POST에 대한 리디렉션 코드가있는 경우 .htaccess로 리디렉션을 재정의하거나 리디렉션을 중지하도록 호스트를 구성해야합니다.

행운을 빈다.

관련 문제