http request Download mit php5_curl

J

jens.becker

Hallo,

ich habe (versucht) ein PHP Script(CLI) zu schreiben, welches mit cURL ein PDF herunterladen und speichern soll. Das klappt bei einer normalen Datei die auf dem Server als Datei zur Verfügung steht.

Das PDF wird nun leider von dem Server erzeugt und wird dann höchst wahrscheinlich als HTTP Request gesendet. Curl bekommt dann eine Weiterleitung http1.1 302 und quittiert das damit das er bis zum MAXREDIRECT versucht weiterzugehen und legt eine leere Datei an.

Ich weiß nun nicht mehr welche anderen Optionen ich bei cURL mitgeben muss um diesen HTTP_Request anzunehmen.

Bin für jeden Tip dankbar.

PHP:
    function getPDF($pdfId, $barcd){
	/****************************************************************************
	**	Diese Funktion nimmt IDs von einerRechnung  an. Diese Id werden an die
	**	Rechnung drucken Site übergeben, welche dann die PDF-Rechnung des Datensatzes 
	**	ausgibt
	**
	****************************************************************************/	
		// Angemeldet?
		//$sf ist ein SOAP Client der für sich wunderbar funktioniert hier aber nur dafür benutzt wird eine SessionID zu bekommen
		global $sf;
		global $configuration;
		//Wo soll gespeichert werden
		global $verzeichnisname;
		
		$rw=$sf->grantLogin();
		if (!$rw){
			return false;
		}
		// Haupt-Url setzen
		$url = substr($sf->endpoint, 0, strpos($sf->endpoint, ".com") + 4);
		//id checken
		$pdfUrl = $url."/apex/Rechnung_drucken_pdf?rid=".$pdfId
		//sendout($pdfUrl);
		
		// Initialisieren von CURL
		$ch = curl_init();
		$postfields="rid=".$pdfId;
		$pdfarc=$verzeichnisname."/".$barcd.".pdf";
		$haendler=fopen($pdfarc,'w');
		$useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 
    	
 
		curl_setopt($ch, CURLOPT_URL, $pdfUrl);
		//curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		//	 Not doing any verification of SSL certificates
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
		curl_setopt($ch, CURLOPT_VERBOSE,0);
		curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
		curl_setopt($ch, CURLOPT_FILE,$haendler);
    	// Set session ID
    	curl_setopt($ch, CURLOPT_COOKIE, 'sid='.$sf->sessionid);
    	//print($sf->sessionid);
    	curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
		$result = curl_exec($ch);
    	curl_close ($ch);


	    //if (!fwrite($haendler,$result)) {
	    	//die('Konnte PDF '.$pdfId.' nicht schreiben!!');
	    //}
		fclose($haendler);
    					
		return true; 
	}

Und das Log von curl
Code:
* About to connect() to eu0-api.########.com port 443 (#0)
*   Trying 204.14.234.41... * connected
* Connected to eu0-api.########.com (204.14.234.41) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSL connection using RC4-MD5
* Server certificate:
* 	 subject: /C=US/ST=California/L=San Francisco/O=########.com, Inc./OU=Applications/CN=eu0-api.########.com
* 	 start date: 2008-11-25 00:00:00 GMT
* 	 expire date: 2010-11-25 23:59:59 GMT
* 	 issuer: /O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
* SSL certificate verify ok.
> GET /apex/Rechnung_drucken_pdf?rid=a0E20000001W3qtEAC HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Host: eu0-api.########.com
Accept: */*
Cookie: sid=440700D20000000HuRN!ARoAQIOkooZWdabiCq2QzNhn1pDS6IWlr0i2xb_rktw0BPV.UTuASrshtoMqgTyOFCGa9O6QWzXzyv9IplcujToT.ihL0e5U

< HTTP/1.1 302 Found
< Location: https://c.eu0.visual.#####.com/apex/Rechnung_drucken_pdf?rid=a0E20000001W3qtEAC
< Server: 
< Cache-Control: private
< Content-Type: text/html
< Transfer-Encoding: chunked
< Date: Wed, 11 Feb 2009 21:01:21 GMT
< 
* Ignoring the response-body
* Connection #0 to host eu0-api.########.com left intact
* Issue another request to this URL: 'https://c.eu0.visual.#####.com/apex/Rechnung_drucken_pdf?rid=a0E20000001W3qtEAC'
* About to connect() to c.eu0.visual.#####.com port 443 (#1)
*   Trying 204.14.234.122... * connected
* Connected to c.eu0.visual.#####.com (204.14.234.122) port 443 (#1)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSL connection using RC4-MD5
* Server certificate:
* 	 subject: /C=US/ST=California/L=San Francisco/O=########.com, Inc./OU=Applications/OU=Terms of use at www.verisign.com/rpa (c)08/CN=#####.com
* 	 start date: 2008-09-17 00:00:00 GMT
* 	 expire date: 2009-09-11 23:59:59 GMT
* 	 issuer: /O=VeriSign Trust Network/OU=VeriSign, Inc./OU=VeriSign International Server CA - Class 3/OU=www.verisign.com/CPS Incorp.by Ref. LIABILITY LTD.(c)97 VeriSign
* SSL certificate verify ok.
> GET /apex/Rechnung_drucken_pdf?rid=a0E20000001W3qtEAC HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Host: c.eu0.visual.#####.com
Accept: */*
Cookie: sid=440700D20000000HuRN!ARoAQIOkooZWdabiCq2QzNhn1pDS6IWlr0i2xb_rktw0BPV.UTuASrshtoMqgTyOFCGa9O6QWzXzyv9IplcujToT.ihL0e5U

..und das wiederholt sich dann

Vielen Dank im voraus

Jens
 

Ähnliche Themen

HP PSC 2175 - CUPS druckt nicht

Problem mit Apache2 + MySQL Server

Jaunty + Zend + Gdata + xampp

OpenVPN Problem

ATI-fglrx unter Ubuntu Hardy - Logoff Issue

Zurück
Oben