Od paru godzin walczę z dodaniem wpisu na pinger.pl przy użyciu CURLa.
Dodanie samego wpisu nie stanowi większego problemu, ale pojawia się spory problem z kodowaniem UTF-8.
Znalazłem prosty program windowsowy do dodawania wpisów na pingera i jemu się udaje, ale wysyła dane jako multipart/form-data w wielu żądaniach.
POST /auth_add_message.xml HTTP/1.1
Content-Type: multipart/form-data; boundary=----------------------------
Host: a.pinger.pl
Content-Length: 385
Expect: 100-continue
Connection: Close
HTTP/1.1 100 Continue
------------------------------
Content-Disposition: form-data; name="text";
[url="http://www.yafud.pl/324/"]http://www.yafud.pl/324/[/url] Dostałam przez pomyłkę SMS-a od mojej matki, przeznaczonego dla mojego ojczyma: \"Młoda zostaje na noc u koleżanki. Zrobimy to w jej pokoju?\" YAFUD
------------------------------
Content-Disposition: form-data; name="show_at_main";
0
------------------------------
Moje żądanie wysyłane z poziomu CURLa wygląda tak:
POST /auth_add_message.xml HTTP/1.1
User-Agent: Pinger PHP API
Host: a.pinger.pl
Accept: */*
Authorization: Basic Y2h5YmEgc2UgamFqYSByb2Jpc3ogOik=
Content-Length: 328
Content-Type: application/x-www-form-urlencoded
text=http%3A%2F%2Fwww.yafud.pl%2F324%2F+Dosta%B3am+przez+pomy%B3k%EA+SMS-a+od+mojej+matki%2C+przeznaczonego+dla+mojego+ojczyma%3A+%22M%B3oda+zostaje+na+noc+u+kole%BFanki.+Zrobimy+to+w+jej+pokoju%3F%22+YAFUD&show_at_main=0&tags=%23wpadka%2C%23rozrywka%2C%23lol%2C%23autentyki%2C%23rotfl%2C%23humor%2C%23wtopa%2C%23yafud%2C%23fail
Efekty działania obu żądań widoczne są na
http://test321.pinger.pl/.
Widać, że w przypadku CURL kodowanie się spsuło.
Może ktoś z forumowiczów wie jak rozwiązać ten problem ? Interesuje mnie jakiekolwiek rozwiązanie dające się uzyskać w oparciu o CURLA.
--------------------------------------------------------------------------------------------------------------------------------------------
EDIT:
Udało mi się znaleźć sposób na multipart/form-data; Wklejam tutaj rozwiązanie na wypadek gdyby ktoś inny tego szukał.
$sHeaders = array ("Content-Type" => "multipart/form-data; boundary=----------------------------"); curl_setopt($this->_stream, CURLOPT_HTTPHEADER, $sHeaders);
curl_setopt($this->_stream, CURLOPT_USERAGENT, $this -> _useragent);
$tags = "#wpadka,#rozrywka,#lol,#autentyki,#rotfl,#humor,#wtopa,#yafud,#fail";
$submitdata = "";
$submitdata .= "------------------------------\r\n";
$submitdata .= "Content-Disposition: form-data; name=\"text\"\r\n\r\n";
$submitdata .= $strMessage;
$submitdata .= "\r\n------------------------------\r\n";
$submitdata .= "Content-Disposition: form-data; name=\"show_at_main\"\r\n\r\n";
$submitdata .= "0";
$submitdata .= "\r\n------------------------------\r\n";
$submitdata .= "Content-Disposition: form-data; name=\"tags\"\r\n\r\n";
$submitdata .= $tags;
$submitdata .= "\r\n------------------------------\r\n";
curl_setopt($this->_stream, CURLOPT_POST ,1);
curl_setopt($this->_stream, CURLOPT_POSTFIELDS ,$submitdata);
curl_setopt($this->_stream, CURLOPT_RETURNTRANSFER, 1);
return curl_exec($this->_stream);
mam nadzieje ze komuś się przyda
Ten post edytował dzwiedzmin 19.09.2009, 12:35:20