2012-02-21 2 views
11

그래서 xml 요청을받을 응용 프로그램을 빌드해야하며이를 기반으로 응답 XML을 반환해야합니다. 나는 요청을 보내고 응답을받는 방법을 안다. 그러나 나는 결코 다른 방법으로 그것을 한 적이 없다. 나는 이렇게 요청을 보낼 것이다 :XML 요청을 받고 PHP에서 응답 XML을 보내는 방법은 무엇입니까?

private function sendRequest($requestXML) 
{ 
    $server = 'http://www.something.com/myapp'; 
    $headers = array(
    "Content-type: text/xml" 
    ,"Content-length: ".strlen($requestXML) 
    ,"Connection: close" 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $server); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    $data = curl_exec($ch); 



    if(curl_errno($ch)){ 
     print curl_error($ch); 
     echo " something went wrong..... try later"; 
    }else{ 
     curl_close($ch); 
    } 

    return $data; 

} 

내 질문은 - 수신 측의 코드는 무엇인가? 들어오는 요청을 어떻게 잡을 수 있습니까? 감사합니다. .

답변

29

일반적인 생각은 POST 값을 읽고 XML로 구문 분석하고 비즈니스 결정을 내리고 결정한 API에 따라 XML 응답을 작성한 다음 응답에 기록하는 것입니다. POST가 값

읽기 : XML로

$dataPOST = trim(file_get_contents('php://input')); 

구문 분석 : 다음

$xmlData = simplexml_load_string($dataPOST); 

, 당신은 (당신이 원하는 경우, 또는 문서 트리) XML 문자열을 구축하고, 인쇄 할 것이다 응답에. print() 나 echo()는 잘 할 것입니다.

+0

최고 수준의 솔루션에서 피크를 취할. – Matth3w

0

수신 할 때해야 할 일은 '일반적인'PHP 스크립트를 만드는 것입니다. 엔드 포인트와 요청 서비스 간의 프로토콜에 따라 $ _GET 또는 $ _POST 어레이가 될 수있는 올바른 위치에서 데이터를 가져와야합니다.

는 당신이 $ _POST에 통해 오는 아니에요 경우 원시 POST 데이터를 읽을 수있다

는이 문서

http://www.codediesel.com/php/reading-raw-post-data-in-php/

관련 문제