2014-10-16 46 views
0

我試圖通過curl或file_get_contents在PHP中獲得(不是xml aparently)本網站的內容: http://gestis.itrust.de/nxt/gateway.dll/gestis_de/010520.xml?f=templates$fn=default-doc.htm$3.0獲取xml的gestis數據庫

你可以在任何瀏覽器中打開網站,但每當我嘗試打開它與PHP來獲取內容自動它會返回一個500錯誤。

這裏所使用的代碼:

<?php 

/* gets the data from a URL */ 
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$returned_content = get_data('http://gestis.itrust.de/nxt/gateway.dll/gestis_de/010520.xml?f=templates$fn=default-doc.htm$3.0'); 

echo $returned_content; 

?> 

沒有任何人有一個想法如何通過從本網站PHP來獲取XML?

+0

爲什麼你有兩個捲曲的init電話,一個包裹在一個函數和一個不是包裹在一個函數,未使用。此外,您提供的鏈接給了我'您正在查找的資源已被刪除,名稱已更改,或者暫時不可用.',而不是XML資源。 – Ohgodwhy 2014-10-16 19:50:29

+0

啊我原諒那寫的。 只有當您通過該鏈接打開它時,它纔會爲您提供內容: http://gestis.itrust.de/nxt/gateway.dll?f=id$t=default-doc.htm$vid=gestisdeu:sdbdeu$編號= 010520 – 2014-10-16 19:52:29

+0

但這不是一個XML文件,要麼... – Ohgodwhy 2014-10-16 19:54:24

回答

0

要打開該網站需要vid=gestisdeu:sdbdeu值在cookie的形式工作:

Cookie: nxt/gateway.dll/vid=gestisdeu%3Asdbdeu; 

請諮詢捲曲文檔時如何設置cookies或者看看成已經是現有材料在這個網站上,例如Is it possible to set the cookie content with CURL?等等。

請注意,根據網站及其配置更改,這可能會有所不同。因此,從技術上講,您的問題不能得到真正的答覆,因爲該網站沒有任何有關HTTP請求要求的文檔。所以你需要自己找出問題並提供這些問題。

PHP實例:

$url = 'http://gestis.itrust.de/nxt/gateway.dll/gestis_de/010520.xml?f=templates$fn=default-doc.htm$3.0'; 
$options['http'] = ['header' => 'Cookie: nxt/gateway.dll/vid=gestisdeu%3Asdbdeu;']; 
stream_context_set_default($options); 
$content = file_get_contents($url); 
var_dump($content); 

輸出:

string(104975) "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>DGUV-IFA GESTIS</title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8"> 
</head> 
<body> 
    <html> 
<head> 
<META http-equiv="Content-Type" content="text/html"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" href="/nxt/gateway.dll/gestis_de/010520.xml?f=stylesheets$fn=gestis-doc.css$up=1$3.0" type="text/css"> 
<"...