>  기사  >  백엔드 개발  >  게시물 요청의 기본 데이터 가져오기

게시물 요청의 기본 데이터 가져오기

巴扎黑
巴扎黑원래의
2016-11-12 15:17:311904검색

때때로 일부 요청으로 제출된 데이터는 공통 매개변수 이름이 아닙니다. 매개변수 값 매핑 관계의 키-값 쌍입니다. 예를 들어 WeChat 공개 플랫폼 서버에서 개발자가 지정한 URL로 제출한 데이터는 xml입니다. 이때, java의 request.getParameter("매개변수 이름")을 통해서도 얻을 수 없고, php의 $_POST['매개변수 이름']을 통해서도 얻을 수 없습니다. 이런 종류의 데이터에 대한 해결 방법은 다음과 같습니다.

  request.setCharacterEncoding("utf-8");
StringBuilder buffer = new StringBuilder();
java.io.BufferedReader reader=null;
try{
/**
* getReader() 
* Retrieves the body of the request as character data using a BufferedReader
* getInputStream() 
* Retrieves the body of the request as binary data using a ServletInputStream.
*/
reader = request.getReader();
String line=null;
while((line = reader.readLine())!=null){
buffer.append(line);
       }
}catch(java.io.IOException e){
e.printStackTrace();
}finally{
if(null!=reader){
try {
reader.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
String res = buffer.toString();
System.out.print(res);

추가 참고 사항: getReader() 및 getInputStream()은 요청 시 한 번만 호출할 수 있으며 동시에 호출할 수 없습니다.

PHP 코드

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

추가 설명:

enctype 속성의 html은 양식 데이터를 서버로 보내기 전에 인코딩하는 방법을 지정합니다. 기본 기본값은 "application/x-www-form-urlencoded"입니다.

application/x-www-form-urlencoded는 전송된 데이터를 키-값 쌍 형식으로 인코딩합니다. 백엔드는 request.getParameter()를 통해

text/plain을 직접 얻을 수 있습니다. 데이터는 컨트롤이나 서식 지정 문자 없이 일반 텍스트로 인코딩됩니다.

multipart/form-data의 경우, 전송되는 데이터는 멀티미디어 전송 프로토콜을 사용해야 합니다. 멀티미디어는 대용량의 데이터를 전송하기 때문에 업로드된 파일은 반드시 포스트 방식으로 전송되어야 한다고 규정되어 있습니다.
파일을 업로드할 때 사용되는 인코딩 유형은 텍스트 데이터를 보낼 수 있고 바이너리 데이터 업로드도 지원하는 "multipart/form-data"여야 합니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.