http://www.trafik.gov.tr/IAS/IAS/wfAracBilgSorgulama.aspx

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Olmuyor

Mesaj gönderen ikurt07 »

var
URL: WideString;
begin


// memo1 değerini navigate edildiğinde alıyorum
URL := 'http://www.trafik.gov.tr/IAS/IAS/wfArac ... ulama.aspx?'+
'__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE='+Memo1.Text+
'&txtPlaka='+Edit1.Text;//+'&imgSorgula.x=75&imgSorgula.y=12';
PlakaWB.Navigate(URL)



kod daha önce çalışıyordu.. şimdi

Server Error hatası veriyor
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Verileri POST ederseniz çalışır... Ben bugüne kadar hep post ettim başım ağrımadı... Post edilirse çalışıyor şimdi tekrar test ettim.
Resim
Resim ....Resim
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Mesaj gönderen ikurt07 »

hocam bir türlü beceremdim...


:cry: strData := '__EVENTTARGET='+ '&'+'__EVENTARGUMENT='+ '&'+'__VIEWSTATE='+Form1.Memo2.Text+ '&'
+ 'txtPlaka=' + HTTPEncode(Plaka);
PostData := VarArrayCreate([0, Length(strData) - 1], varByte);
for i := 1 to Length(strData) do PostData[i-1] := Ord(strData);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser.Navigate('http://www.trafik.gov.tr/IAS/IAS/wfArac ... ulama.aspx?', EmptyParam, EmptyParam, PostData, Headers);

post cevabı ise Server Error Unablede validate data
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Memo2 içeriğindeki veri http encoded veridir inşallah... Yoksa çalışmaz

benim için çalışan yeterlilikte sorgu parametresi aşağıdaki kadar olandır. Fazla parametre sorun çıkarmaz ancak kafa karışıklığı doğurabilir...

Kod: Tümünü seç

  EncodedDataString :=  '__VIEWSTATE='  + HTTPEncode(VS)
                      + '&txtPlaka='    + HTTPEncode(Plaka)
                      + '&imgSorgula.x=51'
                      + '&imgSorgula.y=8';
Resim
Resim ....Resim
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Mesaj gönderen ikurt07 »

Teşekkürler
Sonunda becerebildim..
ilgilenen arkadaşlara kodu mail atabilirim..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- En sonunda ayıp ettin valla.. :oops:

- Kodun öyle çok karmaşık olmasa gerek neden şimdi burada yazmıyorsun ? Kişiye özel bilgi vermiyoruz burada genele faydamız dokunsun diye vakit ayırıyor emek veriyoruz.

- Neyse ben yazıyorum. Senin için vakit kaybı ve / veya çok çok özel ise zahmet vermeyelim...

Kod: Tümünü seç

Function TrafikSorgula( WebBrowser:TWebBrowser; Plaka:String ):WideString;
Const
  VS =   'dDwtMTQyNjU5Mjk4Mjt0PDtsPGk8MT47PjtsPHQ8O2w8aTw5PjtpPDExPjtpPDEzPjtpPDE1PjtpPDE3'
+'PjtpPDE5PjtpPDIxPjtpPDIzPjtpPDI1PjtpPDI3PjtpPDI5PjtpPDMxPjtpPDMzPjtpPDM1PjtpPDM3'
+'PjtpPDM5PjtpPDQxPjtpPDQzPjtpPDQ1PjtpPDQ3PjtpPDQ5PjtpPDUxPjtpPDUzPjtpPDU1Pjs+O2w8'
+'dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+'
+'Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxv'
+'PGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxl'
+'Oz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxW'
+'aXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxw'
+'PHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47'
+'Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+'
+'Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47'
+'bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNp'
+'YmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY+Oz4+Oz47Oz47dDxwPGw8'
+'VmlzaWJsZTs+O2w8bzxmPjs+Pjs7Pjt0PHA8cDxsPFZpc2libGU7PjtsPG88Zj47Pj47Pjs7Pjt0PHA8'
+'bDxpbm5lcmh0bWw7VmlzaWJsZTs+O2w8XGU7bzxmPjs+Pjs7Pjt0PHA8cDxsPFZpc2libGU7PjtsPG88'
+'Zj47Pj47Pjs7Pjt0PHA8bDxpbm5lcmh0bWw7VmlzaWJsZTs+O2w8XGU7bzxmPjs+Pjs7Pjt0PHA8cDxs'
+'PFRleHQ7PjtsPCBTb3JndWxhbWFuxLF6YSBlc2FzIG9sYW4gdmVyaSBnw7xuY2VsbGVtZXNpIDE5LjA4'
+'LjIwMDcgdGFyaWhpbmRlIGdlcsOnZWtsZcWfbWnFn3Rpci5cPGJyXD47Pj47Pjs7Pjs+Pjs+PjtsPGlt'
+'Z1Nvcmd1bGE7Pj5BV3z/ARiRg3JB6QXNEBFXh7RJYA==';
var
  EncodedDataString : string;
  PostData          : OleVariant;
  Headers           : OleVariant;
  i                 : integer;
begin
  EncodedDataString :=  '__VIEWSTATE='  + HTTPEncode(VS)
                      + '&txtPlaka='    + HTTPEncode(Plaka)
                      + '&imgSorgula.x=51'
                      + '&imgSorgula.y=8';
  PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);
  for i := 1 to length(EncodedDataString) do
    PostData[i-1] := ord(EncodedDataString[i]);
  Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;
  WebBrowser.Navigate('http://www.trafik.gov.tr/IAS/IAS/wfAracBilgSorgulama.aspx',
                       EmptyParam, EmptyParam, PostData, Headers);
  Repeat Application.ProcessMessages;
  Until  WebBrowser.ReadyState = ReadyState_Complete;
  Result := WebBrowser.OleObject.Document.Body.InnerHtml;
end;
Kullanımı :

Kod: Tümünü seç

   Text := TrafikSorgula(WebBrowser1, Edit1.Text);


- Herkese kolaylıklar dileriz... :idea:
En son mrmarman tarafından 21 Ağu 2007 05:58 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Mesaj gönderen ikurt07 »

olurmu hocam..
paylaşılan bilgi kutsaldır.
benim yazdığım kod biraz uzun ve karmaşıktı.....

var
ViewState ,P1,P,EncodedDataString : String;
I : Integer;


procedure wb_PostDataSubmit(Webbrowser : TWebBrowser;Url,EncodedDataString: string);
Var
PostData: OleVariant;
Headers: OleVariant;
I: Integer;
PriorityClass, Priority: Integer;
begin
try
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);

PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte);
for I := 1 to Length(EncodedDataString) do
PostData[I-1] := Ord(EncodedDataString);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser.Navigate(Url,EmptyParam,EmptyParam,PostData,Headers);
finally
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
end;
end;

procedure get_vs;
var
HTML : String;
poz:integer;
begin
html:=idhttp1.Get('http://www.trafik.gov.tr/IAS/IAS/wfArac ... ulama.aspx?');
poz:=pos('name="__VIEWSTATE" value="',html);
delete(html,1,poz+25);
ViewState := copy(html,1,pos('"',html)-1);
end;

begin
P := PlakaE.Text;
P1 := '';
for I := 1 to Length(P) do begin // Boşlukları kırp
if P<>' ' then P1 := P1+p;
end;

get_vs;
EncodedDataString := '__VIEWSTATE=' + HTTPEncode(ViewState)
+ '&txtPlaka=' + HTTPEncode(P1)
+ '&imgSorgula.x=51'
+ '&imgSorgula.y=8';

wb_PostDataSubmit(PlakaWB,'http://www.trafik.gov.tr/IAS/IAS/wfArac ... DataString);
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Mesaj gönderen ikurt07 »

Senin kod.. daha basit ve hızlı
şimdi viewsate sabitmidir sistemde değişebilirmi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Viewstate ilk defasında sabittir. Daha sonra sorgudan sorguya güncellenir. Yani yapılan ardışık her sorguda güncellenir.

- İlk defasında ise hiç sorgu yapılmamış boş hali, işte bu Const olarak tanımladığım halidir.

- Dilersen program çalışınca günün ilk sorgusundan önce boş bir sorgu yaptırıp güncel Viewstate değerini HTML Parse ederek global bir değişkene ve/veya INI dosyaya atabilir oradan kullandıra dabilirsin. Tamamen sana kalmış bir olay...

- Bir de hatırlatma. Kodlarını mouse ile bloklayıp CODE tagına alırsan daha formatlı ve anlaşılır görünür.
Resim
Resim ....Resim
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Mesaj gönderen Nick_ »

S.a @mrmarman hocam bahsettiğiniz şekilde yapıyorum ama bu hatayla karşılaşıyorum.Neden bu hatayı veriyor ve nasıl düzeltebilirim..


Resim
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Kullanıcı avatarı
ikurt07
Üye
Mesajlar: 120
Kayıt: 11 Kas 2005 04:21
Konum: Antalya
İletişim:

Mesaj gönderen ikurt07 »

VIEWSTATE değişken olduğundan en güzeli VIEWSTATE bir ini de tutmak hata verdi ise yeni VIEWSTATE almak sorunu çözebilir

Kod: Tümünü seç


   procedure get_vs;
   var
    HTML  : String;
    poz:integer;
  begin
     html:=idhttp1.Get('http://www.trafik.gov.tr/IAS/IAS/wfAracBilgSorgulama.aspx?');
     poz:=pos('name="__VIEWSTATE" value="',html);
     delete(html,1,poz+25);
     Pro_ViewSate := copy(html,1,pos('"',html)-1);
     MyIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Pro_ViewSate.ini');
     MyIni.WriteString('D','Pro_ViewSate',Pro_ViewSate);
     MyIni.Free;
  end;


    MyIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Pro_ViewSate.ini');
    Pro_ViewSate := MyIni.ReadString('D','Pro_ViewSate','');
    MyIni.Free;

   if Pro_ViewSate= '' then   Get_vs;
   EncodedDataString :=  '__VIEWSTATE='  + HTTPEncode(Pro_ViewSate)
                      + '&txtPlaka='    + HTTPEncode('07AB542')
                      + '&imgSorgula.x=51'
                      + '&imgSorgula.y=8';

    wb_PostDataSubmit(PlakaWB,'http://www.trafik.gov.tr/IAS/IAS/wfAracBilgSorgulama.aspx?',EncodedDataString);

var
 ViewState ,P1,P,EncodedDataString : String;
 I : Integer;
begin
  P := PlakaE.Text;
  P1 := '';
    for I := 1 to Length(P)  do begin
      if P[I]<>' ' then P1 := P1+p[I];
    end;
  EncodedDataString :=  '__VIEWSTATE='  + HTTPEncode(Pro_ViewSate)
                      + '&txtPlaka='    + HTTPEncode(P1)
                      + '&imgSorgula.x=51'
                      + '&imgSorgula.y=8';

  wb_PostDataSubmit(PlakaWB,'http://www.trafik.gov.tr/IAS/IAS/wfAracBilgSorgulama.aspx?',EncodedDataString);
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Mesaj gönderen Nick_ »

Eyw hocam sağolasın sorunumu halletmıstım ama yazmayı unutmusum..
ViewState yi programın her acılısında aldırmıstım..

Kod: Tümünü seç

// Uses e FastStrings!!!
var
Aranacak: array[1..3] of integer;
ViewState:string;
begin
  Memo1.Text:=IdHTTP1.Get('http://www.trafik.gov.tr/IAS/IAS/wfCezaPuanSorgulama.aspx');
  Aranacak[1]:=FastPos(Memo1.Text,'__VIEWSTATE"',length(Memo1.Text),12,1);
 if Aranacak[1]>0 then
   begin
      Aranacak[2]:=FastPos(Memo1.Text,'"',length(Memo1.Text),1,Aranacak[1]+12);
     if Aranacak[2]>0 then
       begin
          Aranacak[3]:=FastPos(Memo1.Text,'"',length(Memo1.Text),1,Aranacak[2]+1);
          if Aranacak[3]>0 then
          begin
            ViewState:=copy(Memo1.Text,Aranacak[2]+1,Aranacak[3]-(Aranacak[2]+1));
           end;
       end;
   end;
end;
Bilmemek ayıp değil öğrenmek isteyene öğretmemek ayıp:)
Cevapla