Zur Navigation

Post Übergabe an Ebay via Curl

1 Horst_Braun

Hallo,

ich versuche gerade, an Ebay eine Post Anforderung via Curl zu übergeben. In der Anleitung steht, dass ich folgendes übergeben soll:

POST /path/to/upload/script HTTP/1.0
Connection: Keep-Alive
User-Agent: My Client App v1.0
Host:
https://bulksell.ebay.de/ws/eBayISAPI.dll?FileExchangeUpload
Content-type: multipart/form-data;
boundary=THIS_STRING_SEPARATES
Content-Length: 256
--THIS_STRING_SEPARATES
Content-Disposition: form-data; name="token"
12345678987654321
--THIS_STRING_SEPARATES
Content-Disposition: form-data; name="file";
filename="listings.csv"
Content-Type: text/csv
... contents of listings.csv ...
--THIS_STRING_SEPARATES

Jetzt habe ich folgendes probiert:
$token = "12345678987654321";
$ebay_url = "https://bulksell.ebay.de/ws/eBayISAPI.dll?FileExchangeUpload";

$sendheaders = array(
"User-Agent: My Client App v1.0",
);
$fields = array(
"token" => $token,
"file" => "@listing.csv"
);

$ch = curl_init($ebay_url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1); // set to 0 to eliminate header info from response
curl_setopt($ch, CURLOPT_NOBODY, 0); // set to 1 to eliminate body info from response
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // use HTTP/1.0 instead of 1.1
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); // uncomment this line if you get no gateway response. ###
curl_setopt($ch, CURLOPT_HTTPHEADER, $sendheaders);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); // use HTTP POST to send form data

$resp = curl_exec($ch); //execute post and get results
echo $ch;
curl_close ($ch); 

Das ist meine erster Versuch mit Curl. Es kommt weder ein Ergebnis noch eine Fehlermeldung. In dem Ordner wo ich die Datei starte, liegt auch die Datei listing.csv.

Kann ich irgendwie Fehler ausgeben? Oder kann ich mit das Übergebene anzeigen lassen?

Vielen Dank.

15.11.2017 14:44

2 Jörg

Die Antwort steht nicht in $ch, sodern in $resp:

$resp = curl_exec($ch); //execute post and get results
echo $resp;

15.11.2017 15:03

3 Horst_Braun

HTTP/1.1 100 Continue HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: dp1=bu1p/QEBfX0BAX19AQA**5bed7d91^bl/DE5dceb111^; Domain=.ebay.de; Expires=Fri, 15-Nov-2019 14:07:13 GMT; Path=/ Set-Cookie: s=CgAD4ACBaDZuRYzAwMTUzODIxNWYwYTllMWRlMjYyYzQ2ZmZmZmVkMmHVsNpJ; Domain=.ebay.de; Path=/ Set-Cookie: nonsession=CgADKACBjckuRYzAwMTUzODIxNWYwYTllMWRlMjYyYzQ2ZmZmZmVkMmIAywABWgxRGTGiKSOi; Domain=.ebay.de; Expires=Thu, 15-Nov-2018 14:07:13 GMT; Path=/ Cache-Control: private Pragma: no-cache Content-Type: text/html;charset=UTF-8 Content-Length: 751 Date: Wed, 15 Nov 2017 14:07:13 GMT Dateien wurden hochgeladen. Ihre Referenznummer lautet .

Ok. Vielen Dank. Das hier kommt raus.

Damit kann ich nichts anfangen. Es passiert nicht. Der Path z.B. ist auch noch falsch.
Ich blick da nicht durch.

15.11.2017 15:10

4 Horst_Braun

Juhu. Ich habe den Fehler gefunden. Ab php5.6.0 muss man die @ Funktion wieder aktivieren. Also musste ich nur folgende Zeile einfügen:
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, FALSE);

Vielen Dank.

15.11.2017 15:43

5 Jörg

Noch eine Erklärung nachträglich :)

Der Path z.B. ist auch noch falsch

Der Pfad in der Anwort gehört zum Set-Cookie-Header:

Set-Cookie: dp1=bu1p/QEBfX0BAX19AQA**5bed7d91^bl/DE5dceb111^; Domain=.ebay.de; Expires=Fri, 15-Nov-2019 14:07:13 GMT; Path=/

... besagt also, dass der betreffende Cookie ab dem Wurzelverzeichnis von ebay.de gültig ist

Besser wäre wohl noch so eine Ausgabe gewesen:

echo '<pre>'.$resp.'</pre>';

dann werden auch die Umbrüche zwischen den HTTP-Headern angezeigt

15.11.2017 15:49 | geändert: 15.11.2017 15:53

1 Forenmitglied fand diesen Beitrag gut

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]