2010-12-20 9 views
0

Wie kann ich dies von .asp zu .php umschreiben?Hilfe Konvertieren von .asp in .php

<% 
' Url of the webpage we want to retrieve 
thisURL = "pagerequest.jsp" 

' Creation of the xmlHTTP object 
Set GetConnection = CreateObject("Microsoft.XMLHTTP") 

' Connection to the URL 
GetConnection.Open "get", thisURL, False 
GetConnection.Send 

' ResponsePage now have the response of the remote web server 
ResponsePage = GetConnection.responseText 

' We write out now the content of the ResponsePage var 
Response.ContentType = "text/xml" 
Response.write (ResponsePage) 

Set GetConnection = Nothing 

%>

+0

re-right! = Neu schreiben. –

Antwort

5

Nun, das ist der übersetzte Code (keine Fehlerprüfung, nur einfache Schmutz-Funktionalität):

$url = 'http://server/pagerequest.jsp'; 
$text = file_get_contents($url); 
header('Content-Type: text/xml'); 
echo $text; 

Beachten Sie, dass die $url Bedürfnisse voll qualifiziert sein ...

EDIT: für eine robustere Lösung:

function getUrl($url) { 
    if (ini_get('allow_url_fopen')) { 
     return file_get_contents($url); 
    } elseif (function_exists('curl_init')) { 
     $c = curl_init($url); 
     curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
     return curl_exec($c); 
    } else { 
     $parts = parse_url($url); 
     if (!isset($parts['host'])) { 
      throw new Exception('You need a host!'); 
     } 
     $port = isset($parts['port']) ? $parts['port'] : 80; 
     $f = fsockopen($parts['host'], $port, $errno, $errstr, 30); 
     if (!$f) { 
      throw new Exception('Error: ['.$errno.'] '.$errstr); 
     } 
     $out = "GET $url HTTP/1.1\r\n"; 
     $out .= "Host: {$parts['host']}\r\n"; 
     $out .= "Connection: close\r\n\r\n"; 
     fwrite($f, $out); 
     $data = ''; 
     while (!feof($f)) { 
      $data .= fgets($f, 128); 
     } 
     list($headers, $data) = explode("\r\n\r\n", $data, 2); 
     // Do some validation on the headers to check for redirect/error 
     return $data; 
    } 
} 

Verbrauch:

$url = 'http://server/pagerequest.jsp'; 
$text = getUrl($url); 
header('Content-Type: text/xml'); 
echo $text; 
+0

Beachten Sie auch, dass "allow_url_fopen" aktiviert sein muss, damit dies funktioniert. Ansonsten siehe @ middaparkas Antwort. –

+0

@Brad: weshalb ich updated @ middaparka Antwort; -) ... Ich werde in einer CURL-Option auch bearbeiten ... – ircmaxell

+0

@ircmaxwell: Ich stimme zu, sein Ergebnis ist am besten, aber ich liebe es, meine Finger zu retten Tippen Sie also auch ich bin ein Gefallen für Ihre Antwort. Ich dachte nur, es wäre erwähnenswert, wenn jemand dies versucht und es scheitert (sie wissen, worauf sie achten müssen). ;-) –

6

Wie? Was Sie tun müssen, ist PHP zu lernen und es dann zu schreiben.

Wenn Sie bereits PHP kennen, dann vermute ich, Sie untersuchen möchten:

  1. Unabhängig davon, ob Sie Remote file_get_contents Unterstützung. (Siehe die anderen Antworten.)

  2. Fehler, ob Sie die CURL Funktionen verwenden können, obwohl Sie zuerst überprüfen sollten, ob Ihre Produktionsumgebung Unterstützung Unterstützung hat. (Wenn dies nicht der Fall ist, müssen Sie dies beheben.)

  3. Wenn all diese Probleme nicht auftreten, müssen Sie einen socket connection erstellen und die entsprechenden HTTP-Header senden, um den Remote-Inhalt anzufordern.

Von den oben genannten, würde ich fast ROTATION über file_get_contents empfehlen, da es transparent Wieder lenkt verarbeiten kann (wenn man es zu sagen) und wird mehr von der Unter Pinnings aussetzen, was nützlich erweisen die Zukunft.