Web servis dataset okuma
Web servis dataset okuma
Arkadaşlar merhaba. Delphi xe6 ile android uygulama geliştirmeye yeni başladım. (Delphi ile 15 yıldır win form uygulama geliştiriyorum)
Benim yapmak istediğim web servisten aldığım data yı mobil tarafta sqllite veri tabanındaki tabloya aktarma.
Sqllite kurulumunu ve çalıştırmasını yaptım. İnsert delete filan hepsi tamam. Ama bir türlü web servisten data çekemedim.
Bu konuda örneklerde çok kısıtlı. Yapmak istediğim şey çok basit aslında webservis benden kullanıcı adı ve şifre istiyo bunun sonucunda bana dataset gönderiyor.
Bende bu data set'i alıp aynen sqllite'daki tabloya aktaracağım.
Yardımcı olacak arkadaşlara şimdiden teşekkürler.
Benim yapmak istediğim web servisten aldığım data yı mobil tarafta sqllite veri tabanındaki tabloya aktarma.
Sqllite kurulumunu ve çalıştırmasını yaptım. İnsert delete filan hepsi tamam. Ama bir türlü web servisten data çekemedim.
Bu konuda örneklerde çok kısıtlı. Yapmak istediğim şey çok basit aslında webservis benden kullanıcı adı ve şifre istiyo bunun sonucunda bana dataset gönderiyor.
Bende bu data set'i alıp aynen sqllite'daki tabloya aktaracağım.
Yardımcı olacak arkadaşlara şimdiden teşekkürler.
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: Web servis dataset okuma
Blogumda bu konuya yer vermistim inceleyebilirsiniz
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: Web servis dataset okuma
Merhaba bloğunuzdaki yazıyı inceledim. Fakat siz orada array olark döndürmüşsünüz.mustafasoy yazdı:Blogumda bu konuya yer vermistim inceleyebilirsiniz
Ben data set gelen veriyi almam gerekiyor. Servis o şekilde yazılmış. Buna müdahale etme şansım yok.
- barisatalay
- Üye
- Mesajlar: 398
- Kayıt: 02 Nis 2013 05:43
- İletişim:
Re: Web servis dataset okuma
Ben yazılım işlerinde yeniyim hele ki webservislerde ama şuana kadar kullandığım her webservis string bir veri (yani json xml fark etmez) döndürüyordu sizin ki bu yapılardan daha mı farklı ?tuna yazdı:Merhaba bloğunuzdaki yazıyı inceledim. Fakat siz orada array olark döndürmüşsünüz.mustafasoy yazdı:Blogumda bu konuya yer vermistim inceleyebilirsiniz
Ben data set gelen veriyi almam gerekiyor. Servis o şekilde yazılmış. Buna müdahale etme şansım yok.
Yeni bloğum: http://brsatalay.blogspot.com.tr/
Re: Web servis dataset okuma
sanırım web servisi .Net le geliştirilmiş ve DataSet döndürüyor,
dönen stringi XmlDocumente alıp işleyebilirsiniz.
http://stackoverflow.com/questions/1658 ... webservice
https://www.google.com.tr/webhp?q=c%23% ... set+delphi
dönen stringi XmlDocumente alıp işleyebilirsiniz.
http://stackoverflow.com/questions/1658 ... webservice
https://www.google.com.tr/webhp?q=c%23% ... set+delphi
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Re: Web servis dataset okuma
Daha önce benim takıldığım bir soruna benziyor
http://edn.embarcadero.com/article/28631
linki incelermisin
http://edn.embarcadero.com/article/28631
linki incelermisin
Evrende Ulaşılamayacak Tepe Yoktur !!!!
Yeterki İnsan Ulaşmak İstesin !!!!
http://www.maxiteknik.com
Yeterki İnsan Ulaşmak İstesin !!!!
http://www.maxiteknik.com
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: Web servis dataset okuma
c# ile yazılmış ve geriye dataset ile dönüş yapan bir veriyi delphi ile alamamıştım bayağı bir debelenmiştim
sonunda array ile denediğimde sorunsuz alabildim
umarım dataseti almayı başarırsınız ve bizede kaynak olur
kolay gelsin
sonunda array ile denediğimde sorunsuz alabildim
umarım dataseti almayı başarırsınız ve bizede kaynak olur
kolay gelsin
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: Web servis dataset okuma
Konuya dahil olmak istemedim, şimdiye kadar çözülmüş olmasını bekledim.
- Arkadaşlar, her şeyi delphi tarafından beklemeyin.
- Gelen DATA XML değil mi, amacınızı XML parse işlemi üzerine yoğunlaştırın. Buradan gelen veriden bir kuple code tag içerisinde paylaşabilirseniz size o veri için parse fonksiyonunu yazarım. Örnek olsun diye tabii.
- Bu arada eğer diyorsanız ki, "XML dönen datayı string olarak okuyamıyorum", o zaman size öncelikle WebServis konusunu yeniden değerlendirin demek zorundayım.
- Hem bu sayede string operasyonlarının da her daim lazım olduğunu yeniden hatırlatmış oluruz. Gelen paket(ler) bozuk olursa XML mapper vb. belki de veriyi okuyamayacaktır.
- Ben bir örnek vereyim..Google'da rastgele tarattım veri bloğu olarak http://s3.amazonaws.com/1000genomes benzeri bir veri üzerinde göstereyim.
verisi şeklinde bir kuple aldım... Bunun parse fonksiyonu şu şekilde...
Parse Procedure :
Kullanımı :
Sonuç :

Artık dilediğiniz veritabanına aktarabilirsiniz.
Örnek Proje ekte.... Başarılar.
- Arkadaşlar, her şeyi delphi tarafından beklemeyin.
- Gelen DATA XML değil mi, amacınızı XML parse işlemi üzerine yoğunlaştırın. Buradan gelen veriden bir kuple code tag içerisinde paylaşabilirseniz size o veri için parse fonksiyonunu yazarım. Örnek olsun diye tabii.
- Bu arada eğer diyorsanız ki, "XML dönen datayı string olarak okuyamıyorum", o zaman size öncelikle WebServis konusunu yeniden değerlendirin demek zorundayım.

- Hem bu sayede string operasyonlarının da her daim lazım olduğunu yeniden hatırlatmış oluruz. Gelen paket(ler) bozuk olursa XML mapper vb. belki de veriyi okuyamayacaktır.
- Ben bir örnek vereyim..Google'da rastgele tarattım veri bloğu olarak http://s3.amazonaws.com/1000genomes benzeri bir veri üzerinde göstereyim.
Kod: Tümünü seç
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>1000genomes</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<IsTruncated>true</IsTruncated>
<Contents>
<Key>20131219.populations.tsv</Key>
<LastModified>2014-09-01T03:25:23.000Z</LastModified>
<ETag>"f4136a39ba97906397f4c2996d2fde10"</ETag>
<Size>1663</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>20131219.superpopulations.tsv</Key>
<LastModified>2014-08-30T18:51:20.000Z</LastModified>
<ETag>"1a0ab10759377df262b8ecba927e1eb2"</ETag>
<Size>97</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>CHANGELOG</Key>
<LastModified>2014-12-02T12:30:18.000Z</LastModified>
<ETag>"8b83929d46df4a29b9c1fafee2198bfb"</ETag>
<Size>239180</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>README.alignment_data</Key>
<LastModified>2014-09-02T15:39:53.000Z</LastModified>
<ETag>"9a74187431e1938b490efa34c2f2272d"</ETag>
<Size>15977</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>README.analysis_history</Key>
<LastModified>2014-01-30T11:13:29.000Z</LastModified>
<ETag>"30133df930a45b2aac29cd229169dab7"</ETag>
<Size>5289</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>README.complete_genomics_data</Key>
<LastModified>2014-01-31T03:44:08.000Z</LastModified>
<ETag>"097f06c7e5f6ee192aa38f8a3d54f6ad"</ETag>
<Size>5967</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>README.crams</Key>
<LastModified>2014-08-29T00:22:38.000Z</LastModified>
<ETag>"3248ffbddafe601f78d5981285bf30ea"</ETag>
<Size>563</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
<Contents>
<Key>README.ebi_aspera_info</Key>
<LastModified>2013-08-06T16:11:58.000Z</LastModified>
<ETag>"548f8dd4a270fa9677e640606852788d"</ETag>
<Size>935</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>
Parse Procedure :
Kod: Tümünü seç
// Content Ornegi
// ----------------
// <Contents>
// <Key>20131219.populations.tsv</Key>
// <LastModified>2014-09-01T03:25:23.000Z</LastModified>
// <ETag>"f4136a39ba97906397f4c2996d2fde10"</ETag>
// <Size>1663</Size>
// <StorageClass>STANDARD</StorageClass>
// </Contents>
procedure XMLParse( strGelen:String; HedefListView:TListView );
Function TagArasiField( strVeri, strTag:String ): string;
Var
strAra : String;
begin
strAra := '<' + strTag + '>';
if Pos( strTag, strVeri ) > 0 then
begin
System.Delete( strVeri, 1, Pos(strAra, strVeri) + Length(strAra)-1 );
Result := Copy(strVeri, 1, Pos('</', strVeri) -1);
end else Result := '';
end;
Var
strAra, strBlok, strVeri : String;
i:Integer;
begin
HedefListView.Clear;
strBlok := strGelen;
while Pos('<Contents>', strBlok) > 0 do
begin
strAra := '<Contents>';
System.Delete( strBlok, 1, Pos(strAra, strBlok) + Length(strAra)-1 );
strAra := '</Contents>';
strVeri := Copy(strBlok, 1, Pos(strAra, strBlok)-1);
// Şu an Veri Bloğu elimizde. Bileşenlerine ayıralım...
With HedefListView.Items.Add do
begin
Caption := '';
SubItems.Add( TagArasiField( strVeri, 'Key' ) );
SubItems.Add( TagArasiField( strVeri, 'LastModified' ) );
SubItems.Add( TagArasiField( strVeri, 'ETag' ) );
SubItems.Add( TagArasiField( strVeri, 'Size' ) );
SubItems.Add( TagArasiField( strVeri, 'StorageClass' ) );
end;
end; // While
for i := 0 to HedefListView.Columns.Count - 1
do HedefListView.Columns[i].Width := -1; // otomatik genişlik
end;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
XMLParse( Memo1.Lines.Text, ListView1 );
end;

Artık dilediğiniz veritabanına aktarabilirsiniz.

Örnek Proje ekte.... Başarılar.
- Dosya ekleri
-
- XMLParse_Ornegi.rar
- XMLParse Örneği Kaynak Kodları
- (200.09 KiB) 229 kere indirildi
Re: Web servis dataset okuma
Öncelikle cevap veren arkadaşlara çok teşekkür ederim. Delphi ile .net ile yazılan veriyi xml mapper aracını kullanarak win form'a sorunsuz çektim. Gel gelelim androidde işler değişiyor. Burada xml mapper ile yaptığınız dosyadan veriyi androidde okutamıyorsunuz. Bir şekilde okuttunuz sonrası çok problemli oluyor. Türkçe karakter vs. vs. mrmarman hocamın dediği yöntem çok mantıklı geldi. Kod tarafı biraz zahmetli ama denemeye değer. Sonuçları buradan bildireceğim.
Yinede daha basit yöntemler bulursanız yazmanızı rica ederim.
Yinede daha basit yöntemler bulursanız yazmanızı rica ederim.