XML POST 전송
XML 데이터를 POST로 전송받아 처리할때 사용된다
관련된 함수는 $GLOBALS['HTTP_RAW_POST_DATA'] 이녀석이다.
이녀석은 php.ini에서 always_populate_raw_post_data = On 이 되어 있든지
페이지 상단에 ini_set("always_populate_raw_post_data", "true"); 라고 설정을 해줘야 사용할 수 있다.
send.php에서 샘플용 xml 데이터를 만들고 receive.php 페이지로 보낸 다음,
receive.php 페이지는 xml데이터를 받아서 xml 파싱을 한다음 관련 처리를 하면 된다.
send.php
/*--------------샘플 XML ---------------
<?xml version='1.0' encoding='UTF-8' ?>
<contents>
<userid>deuxign</userid>
<point>91035</point>
</contents>
--------------------------------------*/
// XML 데이터 생성 - 페이지 인코딩이 euc-kr이라 iconv로 UTF-8 형식으로 변환
$member_info_xml = '<'.chr(63).'xml version="1.0" encoding="UTF-8" '.chr(63).'>'.chr(10);
$member_info_xml .= '<contents>'.chr(10);
$member_info_xml .= '<userid>'.iconv('EUC-KR','UTF-8','deuxign').'</userid>'.chr(10);
$member_info_xml .= '<point>'.iconv('EUC-KR','UTF-8','91035').'</point>'.chr(10);
$member_info_xml .= '<contents>'.chr(10);
// fsock으로 POST 전송
$host = '211.xxx.xxx.xxx'; //'http://www.example.com';
$path = '/receive.php';
$xmlData = $member_info_xml;
// 헤더를 설정해서 POST로 전송
$fp = fsockopen($host, '80', $errno, $errstr, 30);
if($fp)
{
$header = "POST ".$path." HTTP/1.1\r\n";
$header .= "Host: ".$host."\r\n";
$header .= "User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n";
$header .= "Content-type: text/html\r\n";
$header .= "Content-length: ".strlen($xmlData)."\r\n\r\n";
$header .= $xmlData."\r\n";
fputs($fp, $header.$xmlData."\r\n\r\n");
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
fclose($fp);
echo $result; // 결과를 출력한다.
}
?>receive.php
ini_set("always_populate_raw_post_data", "true");
// xml 데이터를 받는다
$receive_xml = $GLOBALS['HTTP_RAW_POST_DATA'];
/*--------------------------------------
* XML Parse - simple_XML
----------------------------------------*/
$dom = new DOMDocument;
$dom->loadXML($receive_xml);
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$XML = simplexml_import_dom($dom);
/* $XML 은 이런 형태를 가진다.
SimpleXMLElement Object
(
[userid] => deuxign
[point] => 91035
)
*/
// 받은 데이터 처리
// UTF-8을 euc-kr로 변경
$userid = iconv('UTF-8','EUC-KR',$XML->userid);
$point = iconv('UTF-8','EUC-KR',$XML->point);
- iconv로 UTF-8로 변경한 이유는 php페이지는 euc-kr이었는데, XML parsing 에 사용된 simple_xml이 UTF-8만 가능하기 때문이다.
'PHP' 카테고리의 다른 글
| XML POST 전송 (0) | 2008/09/30 |
|---|---|
| 리눅스 쉘(shell)에서 php 실행 (0) | 2007/11/07 |
| 파일 업로드 소스 (0) | 2007/05/09 |
| 유니코드란 무엇인가? (0) | 2007/01/06 |
| MYSQL DB Character_set 확인 (0) | 2006/11/10 |
| 숫자만 리턴 (0) | 2006/11/06 |
| 정규표현식 (0) | 2006/10/23 |
| 태터이전시 주소리다이렉트 (0) | 2006/09/22 |
| 파일 내용읽기/저장하기 (0) | 2006/05/12 |
| 폴더에서 파일 목록 읽어오기 (0) | 2006/05/12 |
| 정규식 치환 (0) | 2006/04/27 |

이올린에 북마크하기
이올린에 추천하기


