![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
to mój pierwszy post, dzień dobry. Mam problem z zapytaniem POST. Chcę wysłać wiadomość MMS przez bramkę intellisoftware. Pod tym (http://www.intellisoftware.co.uk/sms-gateway/http-interface/send-mms/) linkiem jest dostępny opis formatu MMSa. Przepiszę go tu dla leniwych: CODE Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="username" Content-Type: text/plain YourUsername --AaB03x Content-Disposition: form-data; name="password" Content-Type: text/plain YourPassword --AaB03x Content-Disposition: form-data; name="to" Content-Type: text/plain 0771012345 --AaB03x Content-Disposition: form-data; name="from" Content-Type: text/plain 0771054321 --AaB03x Content-Disposition: form-data; name="type" Content-Type: text/plain 5 --AaB03x Content-Disposition: form-data; name="text" Content-Type: text/plain MMS Message Subject --AaB03x Content-Disposition: form-data; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x Content-Disposition: form-data; filename="file2.gif" Content-Type: image/gif Content-Transfer-Encoding: binary ...contents of file2.gif... --AaB03x-- To jest zendowski dump mojego zapytania: CODE ["zapytanie"] => array(1) { ["http"] => array(3) { ["method"] => string(4) "POST" ["header"] => string(52) "Content-Type: multipart/form-data; boundary=AaB03x " ["content"] => string(5471) "--AaB03x Content-Disposition: form-data; name="username" Content-Type: text/plain intelli_login --AaB03x Content-Disposition: form-data; name="password" Content-Type: text/plain intelli_password --AaB03x Content-Disposition: form-data; name="to" Content-Type: text/plain 48608288403 --AaB03x Content-Disposition: form-data; name="from" Content-Type: text/plain maciek --AaB03x Content-Disposition: form-data; name="type" Content-Type: text/plain 5 --AaB03x Content-Disposition: form-data; name="text" Content-Type: text/plain tematMMs --AaB03x Content-Disposition: form-data; filename="file1.txt" Content-Type: text/plain treasav adfaf aefafae faefaefaefa tttt --AaB03x Content-Disposition: form-data; filename="file2.gif" Content-Type: image/gif Content-Transfer-Encoding: binary GIF89(...); --AaB03x--" Wyciąłem zawartość Gifa, żeby nie zaśmiecać tego tematu jeszcze bardziej. Odpowiedź serwera to stale "request invalid". Hasło i login mam ok (jak zmienie, to krzyczy, że "login invalid"). Wydaje mi się, że zapytanie też mniej więcej ok. Całe zapytanie wysyłam do severa w ten sposób: CODE $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary=AaB03x'."\r\n", 'content' => $content ) ); $context = stream_context_create($opts); $fp = fopen('http://www.intellisoftware.co.uk/smsgateway/default.aspx', 'rb', false, $context); $result = stream_get_contents($fp); gdzie $content to jest to, co jest w tym dumpie jedną rubrykę wyżej. Nie wysyłałem nigdy żadnego POSTa, więc nie mam pojęcia co może być nie tak. Za wszelkie próby pomocy z góry dziękuję! Ten post edytował carambas 23.03.2009, 12:35:26 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
poszedłem za Twoją radą (dzięki za szybką podpowiedź)
Oto co przekazuję jako parametr do curl (dump z Zenda): CODE array(8) { ["from"] => string(4) "ktos" ["text"] => string(5) "adfaf" ["username"] => string(6) "intelli_login" ["password"] => string(6) "intelli_haslo" ["type"] => string(1) "5" ["to"] => string(11) "48501000000" ["plik1"] => string(32) "@./gifs/1237803240-zrobsobie.gif" ["plik2"] => string(17) "@./gifs/tresc_tmp" } text to tamat MMSa. W ".gifs/tresc_tmp" zapisuję treść główną MMS (intelli chce, żeby to było w pliku to robię w pliku, żeby curl mógł sobie z tym odpowiednio poradzić). Polecenia curl: CODE $ch = curl_init('http://www.intellisoftware.co.uk/smsgateway/default.aspx'); //curl_setopt($ch, CURLOPT_CRLF, 1); // <- to jest zakomentowane curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); jak widać szablonowe, ściągnięte z sieci, niby sprawdzone. Ale nie działa. Dalej jest "request invalid". W dodatku jak odkomentuję linijkę, która powyżej jest zaznaczona // treść linijki // to dostaję błąd "ERR: NO PASSWORD", chociaż hasło jest podawane. Dodam, że nazwy elementów tablicy z dumpa powyżej odpowiadają nazwom pól, które są wymagane przez intelli. Ktoś może wie co robię źle? Próbowałem znaleźć sposób, żeby zobaczyć co wysyła curl, ale nie znalazłem takiej opcji. Pozdrawiam Ten post edytował carambas 23.03.2009, 11:20:15 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zobacz sobie opcje
CURLOPT_HTTPHEADER na http://pl.php.net/curl_setopt A zobaczysz co ci wysyła curl robiąc sobie plik testowy mniej więcej o takiej treści
I curlem możesz go wywoływać. Ten post edytował wookieb 23.03.2009, 11:26:08 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedź z plikiem. Świetny sposób testowania. Dzięki temu już wiem, że jak ustawię CURLOPT_CRLF to czyści mi zapytanie zupełnie.
Zapytanie, które wysyłam w postaci tabelki: CODE array(8) { ["from"] => string(5) "adfaf" ["text"] => string(5) "fafaf" ["username"] => string(6) "intelli_login" ["password"] => string(6) "intelli_haslo" ["type"] => string(1) "5" ["to"] => string(11) "48555433222" ["plik1"] => string(71) "@/var/www/eworkspace/crmsms/trunk/public//gifs/1237805374-zrobsobie.gif" ["plik2"] => string(55) "@/var/www/eworkspace/crmsms/trunk/public/gifs/tresc_tmp" } Wynik, który otrzymuję w pliku test.php (print_r($_POST); print_r($_FILES)(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) CODE Array ( [from] => adfaf [text] => fafaf [username] => intelli_login [password] => intelli_haslo [type] => 5 [to] => 48555433222 ) Array ( [plik1] => Array ( [name] => 1237805374-zrobsobie.gif [type] => image/gif [tmp_name] => /tmp/php4JB5pM [error] => 0 [size] => 4637 ) [plik2] => Array ( [name] => tresc_tmp [type] => application/octet-stream [tmp_name] => /tmp/phpfYOKLs [error] => 0 [size] => 41 ) ) Jak widać, wygląda to zupełnie poprawnie. Odpowiedź tego cholernego intelli: ERR:INVALID_REQUEST Kod, którym wysyłam CODE $ch = curl_init('http://localhost/test.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); $ch = curl_init('http://www.intellisoftware.co.uk/smsgateway/default.aspx'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); if (curl_errno($ch)) { echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch); } Kod wręcz zdublowany. curl_errno() nie zwraca błędów. Wysyłał ktoś kiedyś mmsy przez intelli? SMSy działają jak trzeba. Pzdr! |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zobacz jeszcze te nagłówki co pisałem. Może w nagłówkach im coś nie pasuje.
A jeżeli to nie pomoże to pisz do nich (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Sproóbuj jeszcze dac Kod curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: multipart/form-data'));
Ten post edytował wookieb 23.03.2009, 12:11:49 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
aha, nagłówki.
Nie napisałem, że znalazłem informację, jak wyświetlić część zapytania wysłanego przez curl (nagłówki właśnie). Służy do tego funkcja curl_getinfo($ch, CURLINFO_HEADER_OUT) ale przed wykonaniem curl_exec($ch) należy umieścić jeszcze: curl_setopt($ch, CURLINFO_HEADER_OUT, true); (oczywiście nie ma tego w dokumentacji na php.net, jest w komentarzach użytkowników pod nią;]). Wg tychże nagłówków content-type jest dobry, oto dump z niego: CODE POST /smsgateway/default.aspx HTTP/1.1 Host: www.intellisoftware.co.uk Accept: */* Content-Length: 5617 Expect: 100-continue Content-Type: multipart/form-data; boundary=----------------------------d8846e12d61c Nie pozostaje mi nic innego jak ścigać intelli. Wystosowałem do nich gniewną notę z opisem moich katuszy nad tym elementem i zobaczymy. Dzięki za szybkie i sprawne podrzucanie pomysłów. ADDED: zmieniłem podtytuł tematu, żeby łatwiej potem było szukać komuś z podobnymi problemami. Choć wątpię, żeby dużo osób używało Intelli. Ten post edytował carambas 23.03.2009, 12:36:07 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
temat można zamknąć.
ROZWIĄZANIE: zapytania prawdopodobnie wysyłałem prawidło za każdym razem. Konto było nie tego typu... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:05 |