multimesut Posted May 30, 2017 Share Posted May 30, 2017 Merhaba, Bir projede kullanıcının 127.0.0.1 adresinde çalışan servis ile haberleşmem gerekiyor. Servis http ve udp protokollerini destekliyor. Ben projede idhttp veya idudp kullanamam çünkü haberleşeceğim adres 127.0.0.1. Bu durumda kullanabileceğim tek şey TUniURLFrame. Fakat TUniURLFrame ile statuscode alamıyorum. Yükleme başarılı oldumu içeriliği nedir diye almam gerekiyor. Kısaca jQuery ile yapılan aşağıdaki kodu delphi ile yapmak istiyorum. function lastmessage() { var result = null; $.ajax({ url : '127.0.0.1', type : 'get', dataType : 'json', data : JSON.stringify('{"data":{"actions": "lastmessage"}};'), beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic " + btoa('deneme:1234')); } }) .done(function() { console.log('Server: Response Ok!'); }) .fail(function() { console.log("Server: Response Failed!"); }); } Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 30, 2017 Administrators Share Posted May 30, 2017 Ben projede idhttp veya idudp kullanamam çünkü haberleşeceğim adres 127.0.0.1 Neden? Link to comment Share on other sites More sharing options...
multimesut Posted May 30, 2017 Author Share Posted May 30, 2017 idhttp 127.0.0.1 e bağlanmaya çalıştığında sunucu üzerindeki mi 127.0.0.1 e bağlanır. Yoksa web sayfasını açan kişinin bilgisayarındaki 127.0.0.1 e mi bağlanır? Çünkü servis web sayfasını açan kişinin bilgisayarında kurulu oluyor. Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 30, 2017 Administrators Share Posted May 30, 2017 127.0.0.1 local adres demek oluyor. Her zaman bulunduğu bilgisayardaki ilgili porta bağlanmaya çalışır. Link to comment Share on other sites More sharing options...
multimesut Posted May 30, 2017 Author Share Posted May 30, 2017 Evet local adres. Ve benim uniguinin çalıştığı sunucunun değil sayfanın açıldığı bilgisayarın local adresine bağlanmam gerekiyor. idHttp bunu yapabilir mi? Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 30, 2017 Administrators Share Posted May 30, 2017 Anladım. Bu şekilde idHttp ile alamazsınız. Link to comment Share on other sites More sharing options...
multimesut Posted May 30, 2017 Author Share Posted May 30, 2017 Bu durumda benim TUniURLFrame kullanman gerekiyor. Fakat TUniURLFrame ile statuscode alamıyorum. Yükleme başarılı oldumu, yüklendikten sonra içeriliği nedir diye almam gerekiyor. Bunu nasıl yapabilirim? Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 30, 2017 Administrators Share Posted May 30, 2017 UrlFrame standard bir içeriyor. Yani standart bir iframe ile bunu eğer yapabiliyorsanız UrlFrame ile de yapabiliyor olmanız lazım. Link to comment Share on other sites More sharing options...
multimesut Posted May 31, 2017 Author Share Posted May 31, 2017 UniURLFrame1 baktığımda sayfanın yüklendiğini ve sonucu VLC den görebiliyorum. Ama kod olarak 2 sorunum var. 1- UniURLFrame1.IsFinalLoading ile sayfa yüklendimi kontrol edemiyorum. Her zaman false dönüyor. 2- UniURLFrame1.HTML.Text ile sayfanın içini alamıyorum boş değer dönüyor. UniURLFrame1.URL:='http://127.0.0.1:8787/bilgi?{"data":{"actions":"lastmessage"}}'; while UniURLFrame1.IsFinalLoading do Application.ProcessMessages; UniMemo1.Text:=UniURLFrame1.HTML.Text; Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 31, 2017 Administrators Share Posted May 31, 2017 OnFrameLoaded isimli eventi kullanın. Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted May 31, 2017 Administrators Share Posted May 31, 2017 2- UniURLFrame1.HTML.Text ile sayfanın içini alamıyorum boş değer dönüyor. HTML.text tek yönlü çalışan bir property'dir. Client tarafında oluşan içeriği sunucuya göndermez. Link to comment Share on other sites More sharing options...
sinanaydin Posted June 13, 2017 Share Posted June 13, 2017 konuyu tam anlamadım ama istediğiniz şey sanırım websocket https://github.com/andremussche/DelphiWebsockets Link to comment Share on other sites More sharing options...
multimesut Posted June 15, 2017 Author Share Posted June 15, 2017 Tam olarak kullanıcının 127.0.0.1 i ile haberleşmekti. Kullanıcının bilgisayarında yüklü bir uygulamayı tetiklemek için. Örneğin bir print server gibi. Bu durumda Websockets veya idHttp kullanamıyorsunuz. Çünkü bu kütüphaneler server üzerinde çalışıyor. Bende jQuery ve ajax üzerinden get-post yöntemi ile çözdüm. Şimdilik çalışıyor bir sorun yok gibi. #Farshad Mohajeri , #sinanaydin Teşekkür ederim. Link to comment Share on other sites More sharing options...
alp.yilmaz Posted March 19, 2018 Share Posted March 19, 2018 Tam olarak kullanıcının 127.0.0.1 i ile haberleşmekti. Kullanıcının bilgisayarında yüklü bir uygulamayı tetiklemek için. Örneğin bir print server gibi. Bu durumda Websockets veya idHttp kullanamıyorsunuz. Çünkü bu kütüphaneler server üzerinde çalışıyor. Bende jQuery ve ajax üzerinden get-post yöntemi ile çözdüm. Şimdilik çalışıyor bir sorun yok gibi. #Farshad Mohajeri , #sinanaydin Teşekkür ederim. Mesut Bey Merhaba Bahsettiğiniz Konu üzerinde Bende Biraz Kafa Yoruyorum, JQuery ile Olayı Çözdüğünüzü Yazmışsınız Örnek Bir Kod Paylaşabilirmisiniz ... Link to comment Share on other sites More sharing options...
multimesut Posted March 23, 2018 Author Share Posted March 23, 2018 Merhaba; Aşağıdaki gibi bir java ile çözdüm. function SendAPI(id, message) { var result = null; //var obj = document.getElementById(id); $.ajax({ url : address, type : 'get', dataType : 'json', data : JSON.stringify(message), success: function(data){ ajaxRequest(id, '_SendAPI', ['send=OK', 'actions='+data.data.actions, 'results='+data.data.results]); console.log(data.data.results); } }) .done(function() { console.log('Send - OK'); }) .fail(function() { console.log("Send - ERR"); ajaxRequest(id, '_SendAPI', ['send=ERR', '', '']); }); } procedure TForm1.btnNum1Click(Sender: TObject); begin UniSession.AddJS('SendAPI(Form1.form, {"data":{"actions": "test"}});'); end; procedure TForm1.UniFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); var x, actions, results: String; begin if EventName = '_SendAPI' then begin x := Params.Values['send']; end; end; 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now