본문 바로가기

프로그램 경험/PHP

[PHP] xml 데이터 submit 하기

부제 :  HTTP_Request 사용하기

post 방식으로 xml 데이터 자체를 넘겨야 하는 상황이 생겼다.
HTTP_Request를 사용하면 된다고 하길래 다운 받았다.
첨엔 HTTP_Client를 사용하면 된다는 글을 보고 다운받았는데 그안에 HTTP_Request도 같이 들어 있다.
___________________________________
$> pear install HTTP_Client-1.2.1
___________________________________

그리고 아래와 같이 코딩한다.
___________________________________
<?php
//pear 설치된 자신의 폴더를 설정한다. 
ini_set('include_path', '/usr/lib/php' . PATH_SEPARATOR . ini_get('include_path'));

require_once('HTTP/Request.php');
$url = "http://www.sample.com";
$data = '<?xml version="1.0" encoding="euc-kr"?>
<data>
<blogname>physic</blogname>
</data>';

$req = &new HTTP_Request($url);
$req->addHeader("Accept", "*/*");
$req->addHeader("Content-Length", strlen($data));
$req->addHeader("Content-Type", "text/xml;charset=euc-kr;");
$req->setBody($data);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->sendRequest();
 
echo $req->_response->_code .', ' . $req->_response->_reason; //디버깅 때문에 넣었음.
echo $req->getResponseBody();
?>
___________________________________

이렇게 했었는데 어떤 서버에서는 잘 안되는 경우가 생긴다.
그래서 curl를 사용했다.
이게 더 간편하다.

___________________________________
<?php
$url = "http://www.sample.com";
$data = '<?xml version="1.0" encoding="euc-kr"?>
<data>
<blogname>physic</blogname>
</data>';

$ci = curl_init();
curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); //이 옵션을 넣으면 결과 페이지를 리턴받는다.
curl_setopt($ci, CURLOPT_URL, $url);
curl_setopt($ci, CURLOPT_POST, TRUE);
curl_setopt($ci, CURLOPT_POSTFIELDS, $data);

$response = curl_exec($ci);
curl_close ($ci);

echo $response;
?>
___________________________________
 

'프로그램 경험 > PHP' 카테고리의 다른 글

[PHP] JSON 사용  (0) 2012.03.23
[PHP] 난수 생성  (0) 2012.03.22
[PHP] 로그 남기기  (0) 2012.03.05
PHP + PostgreSQL 연동  (0) 2012.02.14
PHP로 소켓 서버 작성하기  (0) 2011.12.11