2014-10-14 3 views
0

XML 응답을 반환하는 외부 사이트 (API)를 호출하려고합니다. 이 작업을 수행하는 여러 가지 방법을 시도하고 동일한 응답으로 끝납니다 : Premature end of file. 불행히도 다른 사이트에서 어떤 긍정적 인 피드백도 얻을 수 없습니다. 아래는 내가 시도한 PHP 명령어와 그 결과이다. 다른 사이트에 문제가 있다는 것을 알게됩니다. URL을 복사하여 브라우저에 붙여 넣기 만하면됩니다. 에코 명령에서XML 쿼리에서 API로 '조기 종료'가 반환됩니다.

$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=<?xml version='1.0'?>"; 
$url .= "<REQUEST userid='p_panda1' password='practice00' facility='3003154010'>"; 
$url .= "<OBJECT name='clinicalreport' op='search_filedelivery'>"; 
$url .= "<receivingorganization>3003154010</receivingorganization>"; 
$url .= "<creation_datetime_from>09/01/2014</creation_datetime_from>"; 
$url .= "<creation_datetime_to>10/10/2014</creation_datetime_to>"; 
$url .= "<is_downloaded>n</is_downloaded></OBJECT></REQUEST>"; 


$myXML = simplexml_load_file($url); 
echo "<pre>"; 
print_r($myXML); 

$postdata = file_get_contents($url); 
echo "<pre>"; 
print_r($postdata); 


$ch = curl_init($url); 

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

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

echo "<pre>"; 
echo $response,"<br>"; 

출력 :

SimpleXMLElement Object 
(
    [0] => Premature end of file. 
) 
Premature end of file. 
Premature end of file. 

답변

0

작성중인 URL이 잘못되었습니다. 당신이 2 questionmarks을 의미

https://cli-cert.emdeon.com/servlet/XMLServlet?request=<?xml version='1.0'?>... 

:

당신은 같은 URL을 만들 수 있습니다. 또한 예를 들어 <은 내가 아는 한 유효한 URL 문자가 아닙니다.

$request = '<?xml version='1.0'?>...etc...'; 
$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request=". urlencode($request); 
+0

이것은 효과가 있습니다. url_encode를 urlencode로 변경해야했습니다. – user3861385

+0

위대한 :) 나는 그것을 실제로 urlencode()로 변경했습니다. – vrijdenker

0

당신은 매개 변수를 urlencode해야합니다

그래서 당신은 같은를 URL 인코딩해야합니다. 자세한 내용은 http://php.net/manual/en/function.urlencode.php을보십시오. 이것으로 변경 한 후, 모두 3 명이 응답으로 돌아옵니다.

$url = "https://cli-cert.emdeon.com/servlet/XMLServlet?request="; 
$xml = "<?xml version='1.0'?>"; 
$xml .= "<REQUEST userid='p_panda1' password='practice00' facility='3003154010'>"; 
$xml .= "<OBJECT name='clinicalreport' op='search_filedelivery'>"; 
$xml .= "<receivingorganization>3003154010</receivingorganization>"; 
$xml .= "<creation_datetime_from>09/01/2014</creation_datetime_from>"; 
$xml .= "<creation_datetime_to>10/10/2014</creation_datetime_to>"; 
$xml .= "<is_downloaded>n</is_downloaded></OBJECT></REQUEST>"; 

$url = $url . urlencode($xml); 
관련 문제