gienek Napisano Czerwiec 11, 2013 Zgłoś Share Napisano Czerwiec 11, 2013 Cześć, Mam taki programik pisany w Lazarusie, który generuje sumę MD5 pliku, następnie wysyła tę informację na serwer do skryptu PHP metodą POST. Problem w tym, że w programie dostaję odpowiedź że żądanie jest nieprawidłowe, zaś gdy wklepię w przeglądarce identyczny adres URL, to dostaję prawidłową odpowiedź. Czy ktoś mógły mi jakoś poradzić? To moje pierwsze zetknięcie się z Synapse i być może robię coś źle. if (HttpPostURL(url, Parametry, Odpowiedz)) then Odpowiedz.SaveToFile('E:\rezultat.txt'); Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Czerwiec 11, 2013 Zgłoś Share Napisano Czerwiec 11, 2013 Nie korzystałem nigdy z synapse. Tu jest niby najprostrzy przykład właśnie wysłania takiego zapytania: http://stackoverflow.com/questions/6291381/how-to-send-http-data-and-get-response-with-synapse-delphi Pierwsze co może mi się nasuwać to to, że może przy parametrach nie korzystach z tej ich funkcji: EncodeURLElement ? Daj więcej kodu może też to ktoś coś poradzi. Bo w tej jednej linijce, której dałeś to błędu nie ma. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
gienek Napisano Czerwiec 11, 2013 Autor Zgłoś Share Napisano Czerwiec 11, 2013 Zrobiłem tak jak jest w tym przykładzie i... if (OpenDialog1.Execute) then begin PathToFile:=OpenDialog1.Filename; Label2.Caption:=PathToFile; FileHash := MD5Print(MD5File(PathToFile)); Response := TMemoryStream.Create; try url:='http://threatcenter.crdf.fr/API.php?HashSeek&'; Params := 'V=' + EncodeURLElement(FileHash) + '&HashType=md5&ReturnType=phpb'; if (HttpPostURL(url, Params, Response)) then Response.SaveToFile('E:\response.txt'); finally Response.Free; end; end; Normalnie powinienem dostać w pliku response.txt taki komunikat: OK1CRDF.EICAR.Test.File.NOT.a.Virus120044d88612fea8a8f36de82e1278abb02f3395856ce81f2b7382dee72602f798b642f141401271601541 a dostaję: ERROR: invalid data ReturnType. Please chose variable ReturnType between : json (array javascript) / phpb (array php serialize) / xml. Próbowałem z xml (czyli ta pojedyncza linia tekstu jak w przykładzie powyżej), ale to samo :/ Link do komentarza Udostępnij na innych stronach More sharing options...
olesio Napisano Czerwiec 11, 2013 Zgłoś Share Napisano Czerwiec 11, 2013 Musisz wysłać niemal identyczne dane, jakich oczekuje skrypt php poprzez metodę POST. Czy jesteś autorem tego skryptu? Jeżeli można do niego słać pliki też przez jakąś prawdziwą stronę www, to polecił bym przeanalizować debuggerem HTTP lub snifferem, co jest wysyłane i postarać się wysłać identyczne dane z pod Synapse. Ja z POST'owaniem nie miałem nigdy pod Synapse większych problemów. W moim artykule na: http://4programmers.net/Delphi/Artykuły/Obsługa_protokołu_HTTP_przy_użyciu_pakietu_Synapse jest wszystko opisane. Polecał bym słać dane POST'em przez utworzony obiekt klasy THttpSend i merodę: HTTPMethod('POST', Url); bo masz większą kontrolę nad własnościami obiektu, niż to co oferuje gotowa funkcja. Pozdrawiam: olesio Link do komentarza Udostępnij na innych stronach More sharing options...
dj.drezyna Napisano Czerwiec 12, 2013 Zgłoś Share Napisano Czerwiec 12, 2013 Tak sobie czytam ten temat i może to będzie pomocne o ile jest to podobne do tech. AJAX. Otóż swego czasu miałem problem z odpowiedzią serwera, bo miał np. dać tekst: 'nie' i mimo, że się tak działo, że serwer na 100% miał zwrócić ten łańcuch to porównanie if($odp == 'nie') było ciągle false. Problemem okazało się to, że strona była na darmowym serwerze, a ten generował swoje ,,głupoty'' w postaci reklam i rozwiązanie tego problemu polegało na otoczeniu odpowiedzi w np 123\r\n MOJA ODP 123\r\n i potem w js odp = odp.split("123\r\n"); Jeżeli to nie to, to proszę się nie denerwować, chciałem pomóc Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.