ANADOLU AJANSI HABER AKIŞ SİSTEMİ (HAS) API ERİŞİM ve KULLANIM KLAVUZU



Benzer belgeler
MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

PAKET TRANSFER SİSTEMİ

PAKET TRANSFER SİSTEMİ

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

JETSMS XML Mesaj İşlemleri Yardım Dokümanı Tarih Sürüm XML ile Mesaj İşlemleri

PAKET TRANSFER SİSTEMİ


ICE BİLİŞİM TEKNOLOJİLERİ WEB SERVİS KILAVUZU. SERVİS LİNK: DÜZENLEME TABLOSU

%20dolor%20sit%20amet&receipents= , &sender=PROAKTIF

Tel : 0(532) Web : E-Posta : info@kayikcioglugrup.com. İLETİ PAKETİ API (Entegrason) Dökümanı

um%20dolor%20sit%20amet&receipents= , &sender=ILETICELL İstekte gönderilen parametrelerin açıklamaları aşağıdaki gibidir:

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

TachoMobile Web Uygulaması v1.00.

GOLDMESAJ SMS API DÖKÜMANI

SMSEXPLORER XML API. XML API KILAVUZU v.1.0

TC KİMLİK NO SMS GÖNDERİM SOAP API

COM API v.1.1 BELGE SÜRÜMÜ : 1.1

VIDEOCELL API. Versiyon 1.0.0

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

MOKA ÖDEME SERVİSİ BAYİ İŞLEMLERİ ENTEGRASYON DOKÜMANI

3G Sms&MMS GateWay Xml Interface

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih Sürüm 1.1.0


ZİRVEDRİVEWEB YAZILIMI KULLANIM KILAVUZU

Submit metodu birden fazla numaraya aynı içerikli kısa mesaj gönderimi için kullanılmaktadır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Xml Arayüzleri. 6. Sms To Multisenders (Farklı Mesajların Farklı Numaralara Yollanması)

e-logo e-fatura Özel Entegratör Sistemi

V-Count API v İnsan Sayma sonuçları için istekler adresine gönderilecektir.

Burak Kıymaz JAVA FX

TARİHÇE. Versiyon Tarih Düzenleyen Açıklama Engin DURMAZ İlk versiyon

SMS interconnecion APi S DOKÜMANI

AUTODESK PORTALI İÇİN AKADEMİK HESAP OLUŞTURULMASI

T.C AİLE, ÇALIŞMA VE SOSYAL HİZMETLER BAKANLIĞI İŞ SAĞLIĞI VE GÜVENLİĞİ BİLGİ YÖNETİM SİSTEMİ (İBYS) WEB SERVİS KULLANIM KILAVUZU V1.

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

XML ile Mesaj İşlemleri

Online Protokol Üretim Projesi

TÜİK e-vt. Web Servis Kılavuzu

MutluSantral API Dokümanı. Versiyon 1.0.1

Dijital Varlık Yönetimi Yardım Dokümanı

MOBILEPAX ENTERPRISE API (WEB SERVİS)

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Öğr. Gör. Serkan AKSU 1

SOAP API. Mobildev Toplu Mesajlaşma API

Sıcak Tahsilat Web Servisleri Yapısı

Dış Kurum Entegrasyonları TURKPOS API. Yardım Dokümanı

V-Count API v3.6 İçindekiler

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Doktor Web Tasarım ile sıfır hatada Dünya standartlarında web kalite politikasına uygun web sitesi oluşturabileceksiniz

MARKAM SMS SMS GÖNDERİM WEB SERVİSLERİ VERSİYON 1.6

NicProxy Registrar WHMCS Modül Kurulumu Versiyon 1.0

Turkcell Hizmetleri LOGO KASIM 2011

LOGO için Online Mutabakat Kullanım Kılavuzu

KULLANIM KILAVUZU. VSP Teknoloji ile sıfır hatada Dünya standartlarında web kalite politikasına uygun web sitesi oluşturabileceksiniz

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

IPACK LADDER. Arayüz Dökümantasyonu

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Emerald ejournals Premier Koleksiyonu İçerik ve Kullanım

3G SMS & MMS GateWay Xml Interface

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

ZİRVEDRİVE IOS YAZILIMI KULLANIM KILAVUZU

BSOFTefat E-FATURA ÇÖZÜMÜ

Global Haberleşme API Kullanıcı Notları

e-defter Müşteri Web Servisi Dokümanı

SMS API. KobiKom Telekomunikasyon A.Ş. SMS API Kullanım Bilgilerini İçerir. Tel: Fax:

MOBİL UYGULAMA GELİŞTİRME

MARKAM SMS SMS GÖNDERİM WEB SERVİSLERİ VERSİYON 1.2

MOKA ÖDEME SERVİSİ ORTAK ÖDEME SAYFASI ENTEGRASYON DOKÜMANI V

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

Lila Mobil Ticari v4 API REFERANS DOKÜMANTASYONU

e-imzatr Kurulum Klavuzu

Toplu İleti Gönderimi

LOGO için Online Mutabakat Kullanım Kılavuzu

MARKAM SMS SMS GÖNDERİM WEB SERVİSLERİ VERSİYON 1.4

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Başlangıç; Sayfa 1. Sanal pos tanımlandığında üye numarası admin kullanıcı adı parolası ile Garanti Bankasından tarafınıza iletilecektir.

Emerald ejournals Premier Koleksiyonu İçerik ve Kullanım

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.


IEEE Xplore KULLANIM KILAVUZU

FAKS SUNUCU EĞİTİM DÖKÜMANI

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

Arena ConnAct. XML Servisi Entegrasyon Dokümantasyonu API Versiyon 1.0 Dokümantasyon Versiyon 0.1

API v1.0

BİL-142 Bilgisayar Programlama II

EPİAŞ ABONE BİLGİLERİ KAYDI KILAVUZ DOKÜMANI V.2. Kullanıcı. Kapsam. Yasal Dayanak. Veri Kayıt Sorumlusu. Veri kayıt süresi. Ekran Adı.

WebInstaller. 1. Kurulum Đçin Gereksinimler

OPERATÖR SERVİSLERİ. Kullanıcı Kılavuzu

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

MERSİN ÜNİVERSİTESİ AKADEMİK PERSONEL BİLGİ SİSTEMİ

Turnitin Kullanım Klavuzu (Öğretim Üyesi)

BAY.t ENTEGRE PRO e-fatura ÇÖZÜMÜ ENTEGRATÖR KULLANIM YÖNTEMİ

DataExchangeService Tanım

Değerli Datasoft Kullanıcısı;

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Transkript:

ANADOLU AJANSI HABER AKIŞ SİSTEMİ (HAS) API ERİŞİM ve KULLANIM KLAVUZU VERSİYON 1.0.0 06.05.2013

Anadolu Ajansından tarafınıza oluşturulan ve mail adresinize gelen, Master Kullanıcı Hesap Bilgileri ile http://has.aa.com.tr adresine giriş yaparak API servisini kullanmak üzerde bir API kullanıcısı oluşturmanız gerekmektedir. Oluşturduğunuz bu API kullanıcısı ile; yetkili olduğunuz Anadolu ajansı haber bültenlerini, tarafınızdan geliştirilmesi gereken bir script ya da uygulama ile otomatik olarak kendi sunucularına indirmek için kullanacaksınız. API kullanıcısı oluşturma adımları: 1. Master kullanıcı adınız ve şifreniz ile giriş yapınız. (Örnek için; kullanıcı adı olarak 3001300 seçilmiştir.) 2. Giriş yaptıktan sonra gelen pencereden; Yeni Kullanıcı butonuna tıklayınız.

3. Yeni kullanıcı tanımlama ekranından ilgili alanları doldurup, kullanıcı oluştur butonuna basarak API kullanıcısı oluşturma adımını tamamlanmış olacaksınız. Oluşturulan API kullanıcınız ile, yetkili olduğunuz bültenler üzerinden haberleri kendi bilgisayarlarınıza otomatik olarak indirebilmeniz için http://api.aa.com.tr adresi üzerinde hizmet veren servislere, uygun parametreleri göndermeniz gerekmektedir. API konsolu programlama seviyesinde aşağıdaki anlatıldığı gibi iletişim kurulabilmektedir.

API nin Genel Kullanım Bilgileri Anadolu Ajansı Abone Haber API si HTTPS üzerinden GET ve POST metodları ile çalışır. Tüm isteklerde HTTP_BASIC_AUTH ile kullanıcı adı ve şifre gönderilmelidir. API cevapları JSON formatındadır. ( www.json.org ) API üç fonksiyondan oluşur. 1- discover: Arama fonksiyonuna ait parametrelerin sayısal karşılıklarını bize döndürür. 2- search: Gönderilen parametrelere haber aramalarını yaparak bulunan sonuçları listeleyen fonksiyonu barındırır. 3- document: Arama sonucu gelen haber listesinden istenilen haber, fotoğraf ve Video dosyalarının indirilmesini ve kullanıcı tarafından kaydedilebilmesini sağlayan fonksiyondur. Yapılacak entegrasyonda; Arama filtrelerini oluşturabilmek için discover fonksiyonu ile gelen değerler incelenmelidir. Oluşturulan filtreler ile ya da filtresiz olarak, Arama (search) şablonları kullanılarak, API aracılığı ile haber, fotoğraf ve görüntü araması yapılmalıdır. Arama sonuçlarında gelen haber numaraları ile haberin içeriğini isteğe göre farklı formatlarda imdirebilmek için document fonksiyonu ile kullanılmalıdır.

1. Discover Fonksiyonu Discover fonksiyonu, Anadolu Ajansı nın servis ettiği haberlerin kategori (category), öncelik (priority), bülten (package), tür (type), dil (language), haberin sağlayıcısı (provider) bilgilerinin sayısal karşılıklarını getirir. Fonksiyona verilen language_iso parametresin; göre belirtilen dile çevirerek getirir. Türkçe karşılıkları için; GET /abone/discover/tr_tr İngilizce karşılıkları için; GET /abone/discover/en_us Arapça karşılıkları için; GET /abone/discover/ar_ar şeklinde parametreler gönderilerek kullanılmalıdır. Parametre olarak tr_tr gönderilmesi durumunda genel liste aşağıdaki gibidir. "data": "provider": "1": "Anadolu Ajansı", "category": "1": "Genel", "2": "Spor", "3": "Ekonomi", "4": "Sağlık", "5": "Bilim, Teknoloji", "6": "Politika", "7": "Kültür, Sanat, Yaşam", "priority": "1": "1 Flaş", "2": "2 Acil", "3": "3 Önemli ", "4": "4 Rutin", "5": "5 Özel", "6": "6 Arşiv", "package": "1": "Genel", "2": "Özel", "3": "Yerel", "5": "Internet",

"type": "1": "text", "2": "picture", "3": "video", "language": "1": "tr_tr", "2": "en_us", "3": "ar_sa", "4": "bs_ba", "5": "ru_ru", "response": "success": true, "code": 200 API den gelen cevap içinde her zaman için 2 nesne bulunmaktadır. Bunlar data ve response nesneleridir. 1. data: API nin yanıtının yani kullanılacak verinin bulunduğu nesnedir. 2. response: API ye gönderilen isteğe, sonucun başarılı bir şekilde gönderilip gönderilmediğini bildirir. Data parametresinin içerisindeki nesneler; provider: Haberin kaynağını / sağlayıcısını ifade eder. Örnek veride bulunan 1 : Anadolu Ajansı kısmı seach işleminde filter_provider için kullanabileceğiniz sayısal veriyi belirtir. category: Haberin kategorisi ifade eder. ( Genel, Spor, Ekonomi, Sağlık, Bilim-Teknoloji, Politika, Kültür-Sanat-Yaşam) priorty: Haberin önceliğini ifade eder. (1:Flaş, 2:Acil, 3:Önemli, 4:Rutin, 5:Özel, 6:Arşiv) package: Haberin yayınlandığı, abone olduğunuz haber bültenlerini ifade eder. (1:Genel Bülten, 2:Özel Bülten, 3:Yerel Bülten, 4:Spot Haber Bülten, 5:İnternet Haber Bülteni vb.) type: Haberin Türü ifade eder. (1:Haber, 2:Fotoğraf, 3:Video) language: Seçilen bülten içinden servis edilen diller arasından hangisini istediğinizi ifade eder. (Örneğin; Genel Bültenden Türkçe Olarak Servis edilen haberler)

1:tr_TR 2:en_US 3:ar_SA 4:bs_BA 5:ru_RU 6:fr_FR vb. : Türkçe : İngilizce : Arapça : Boşnakça : Rusça : Fransızca 2. Search Fonksiyonu Search fonksiyonu abonelik kapsamında almaya yetkili olduğunuz paketler içinde yer alan haberlerin tümünü ya da bir kısmını filtreleyerek listelemenizi sağlar. Bu fonksiyon POST methoduna dayanarak çalışır. Discovery fonksiyonu dönen data alanı içinde yer alan nesneler ile arama seçeneklerini oluşturabilrsiniz. Bir veya birden fazla filtre vererek arama sonuçlarını daraltabilirsiniz. Oluşturacağınız filtreleri genel olarak 4 başlık altında toplayabiliriz. 2.1 Tarih Filtreleri Aramada haberleri tarihe göre filtrelemek istediğimizde, 2 seçeneğimiz bulunmaktadır. start_date: Aramanın yapıldığı filtre için, haberlerin başlangıç tarihini ifade etmektedir. Başlangıç zamanı olarak belirli bir tarih seçilmeyip, var olan en eski (ilk kaydın oluşum zamanı) tarihten itibaren bir arama yapılmak istenirse * (yıldız) seçeneği kullanılabilir. end_date: Aramanın yapıldığı filtre için, haberlerin bitiş tarihini ifade etmektedir. İki tarih aralığında arama yapılırken; bitiş tarihi için NOW yazılırsa; o anki zaman olarak sistem filtreleme yapacaktır. Burada start_date ve end_date alanlarına belirli bir zaman girilmek isteniyorsa; tarih YYYY-MM-DDTHH:NN:SSZ formatında ve (UTC) Greenwich e göre çevrilerek yazılmalıdır. Örneğin; Türkiye saati ile 15 Şubat 2013 15:45:00 için 2013-02- 15T13:45:00Z şeklinde yazılmalıdır.( start_date = 2013-02-15T13:45:00Z veya end_date = NOW gibi.)

2.2 İçerik Filtreleri İçerik filtreleme seçenekleri; discovery fonksiyonu ile bize dönen nesnelere filtrelemeleri kapsamaktadır. Discovery ile elde ettiğimiz provider, category, priorty, package, type ve language seçeneklerinin başlarına filter_ kelimesini ekleyerek ve karşılıklarına yine discovery ile dönen sayısal değerleri girerek kullanılmaktadır. Örneğin; Filtreleme yaparken haberlerin sadece spor kategorisinden gelmesi isteniyorsa filter_category = 2 şeklinde kullanılır. Birden fazla kategoride filtreleme yapılmak isteniyorsa bu sayısal değerler virgülle ayırarak aynı parametre içinde gönderilir. filter_category = 2,3 şeklinde kullanılır. filter_provider = 1 ( Anadolu Ajansı kaynaklı haberler) filter_priority = 1,2 ( Flaş ve Acil önceliğindeki haberler) 2.3 Metin Filtresi İçerik ve Tarih filtreleriyle birlikte de kullanılabilen metin filtrelemesi aradığımız belli bir kelime ya da kelime grubuna göre gelecek olan haber listesini daraltmak için kullanılmaktadır. Bu filtreleme seçeneği için filtreler içine eklenecek search_string parametresi kullanılmaktadır. Bu sayede, haberlerin başlık, özet ve haber metni içerisinde geçen kelime ya da kelime gruplarına göre bir arama yapılarak haberler filtrelenebilmesi sağlanabilmektedir. Örneğin; search_string = Anadolu,Müze 2.4 Kayıt Filtresi Arama Sonucu gelen kayıtların sayfalanarak çekilmesi istenirse; kaçıncı kayıttan itibaren kaç adet kayıt listelenmesi gibi parametrelerin girilebileceği alanları içerir. Offset ve limit gibi iki adet parametre çeşidi bulunmaktadır. offset: Arama sonucunda bulunan haber listesinin içinden, kaçıncı kayıttan itibaren listelenmesi gerektiğini bildirecek parametredir. limit: Arama sonucunabildirilen ofset değerinden itibaren kaç adet kaydın getirileceğini bildirecek parametredir. Örneğin; offset : 0 limit : 100

Arama (Search) Fonksiyonu Kullanım Örnekleri Örnek 1: Türkiye deki bir abone 15 Şubat 2013 de yayınlanmış Anadolu Ajansı Spor Servisi Türkçe haberlerini almak için aşağıdaki parametreleri göndermesi yeterlidir. POST /abone/search/ start_date : 2013-02-14T22:00:00Z end_date : 2013-02-15T22:00:00Z filter_category : 2 filter_type : 1 filter_language: 1 Örnek 2: Bosna daki bir abone 15 Şubat 2013 de yayınlanmış Anadolu Ajansı Türkçe ve Boşnakça tüm haberlerini almak için aşağıdaki parametreleri göndermesi yeterlidir. POST /abone/search/ start_date : 2013-02-14T23:00:00Z end_date : 2013-02-15T23:00:00Z filter_type : 1 filter_language : 1,4 Örnek 3: Türkiye deki bir abone 15 Şubat 2013 den önce yayınlanmış tüm Anadolu Ajansı Genel ve Özel Bültendeki Türkçe haberlerinde Dolar kelimesini aramak için aşağıdaki parametreleri göndermesi yeterlidir. POST /abone/search/ start_date : * end_date : 2013-02-15T22:00:00Z search_string : Dolar filter_type : 1 filter_language: 1 filter_package: 1,2

Arama (Search) Fonksiyonundan Gelen Örnek Cevap "data": "result": [ "id": "aa:text:20121122:92583", "type": "text", "date": "2012-11-22T09:59:22Z", "title": "Yerli teknoloji dünya gündeminde", "id": "aa:text:20121122:92582", "type": "text", "date": "2012-11-22T09:51:13Z", "title": "Donanmada büyük hareketlilik!" ], "total": 45, "response": "success": true, "code": 200 POST methodu ile parametrelere uyan kayıtlara ilişkin API den gelen cevabın içinde iki ana alan bulunmaktadır. data Alanı :Bu alanda aramaya uygun olarak bulunan kayıtlara ait bilgiler bulunmaktadır. Data alanı için 2 alt alan bulunmaktadır. o result Alanı : Result sonucu uygun olarak bulunmuş haberlerin dizisini barındırır. Her bir dizi elemanı içinde; haberi temsil eden nesne içerisinde yer alan id,type,date ve title alanları aşağıdaki bilgileri ifade etmektedir. Id : Listelenen haberin tekil kayıt numarasıdır. Type: Haberin türünü belirtir(text, Photo,Video). Date: Haberin yayın tarihini belirtir. (UTC formatında) Title: HAberin başlığını belirtir. o Total Alanı : Aramaya ilişkin bulunan toplam kayıt sayısını belirtir. reponse Alanı: Bu alan yapılan aramanın sonucunun başarılı bir şekilde döndürülüp döndürülmediğini bildirir.

3. Document Fonksiyonu Bu fonksiyon GET methodu ile çalışmaktadır. Search fonksiyonu ile yapılan haber aramasına istinaden dönen haber listesi içinde yer alan (Id) tekil haber numarası kullanılarak, haberin istenilen formatta indirilebilmesini sağlar. Bu fonksiyon içeriği iletirken Yönlendirme ile (Temporary Redirection: 304) gelebilir. Eğer abonelik kapsamında alınamayan bir içerik istenirse hata verilir (Forbidden : 403). İçerik indirme için yapılan yönlendirme ile üretilen linkler bir gün geçerli olmak üzere IP ye özel olarak üretilir. API çağrısının yapıldığı ve indirme işleminin yapılacağı sunucu aynı IP ye internet çıkış IP sine sahip olmalıdır. Aksi takdirde 403 hatası alır. Örnek olarak; http://d01.aa.com.tr/2013/03/07/aa_picturegroup_20130307_13752/aa_picture _20130307_13754_high.jpg?token=d59c6f6f9356d061e3cd63a9d7986eab9f9938 34 Haberlerin indirilmesi : Arama sonucunda gelen haber listesi içinde type alanı text olan kayıtlar, sistemden NewsML v1.2 (newsml12) ve NewsML v2.9 (newsml29) formatlarında indirilebilmektedir. GET /abone/document/aa:text:20121122:92583/newsml29 GET /abone/document/aa:text:20121122:92583/newsml12 Fotoğrafların indirilmesi : Arama sonucunda gelen haber listesi içinde type alanı picture olan kayıtlar, sistemden abonelik tanımlarına gore print, web, mobile formatlarında indirilebilir. Abonelik kapsamında kalan bir formatta istek gönderilecek olursa; yanıt olarak Forbidden : 403 hata mesajı alınacaktır. GET /abone/document/aa:picture:20121122:92584/print

Görüntülerin indirilmesi : Arama sonucunda gelen haber listesi içinde type alanı video olan kayıtlar, sistemden abonelik tanımlarına gore hd, sd, web, mobile formatlarında indirilebilir. Abonelik kapsamında kalan bir formatta istek gönderilecek olursa; yanıt olarak Forbidden : 403 hata mesajı alınacaktır. GET /abone/document/aa:video:20121122:92585/sd Kod Örnekleri Aşağıda java dilinde yazılmış ve HAS - API si üzerinden içerikleri arayıp bilgisayarınıza indirmenizi sağlayacak kod örnekleri bulunmaktadır. HasNewsJob.java: Bu dosya yetkilere göre, haberleri arayıp, listeyen kod sınıfıdır. NewsResponseData.java: Bu dosya API den dönen haber listesi üzerinden ilgili haber, foto ve görüntü dosyalarını bilgisayara indiren yardımcı data sınıfıdır.

HasNewsJob.java sınıfının içeriği: import java.text.simpledateformat; import java.util.calendar; import java.util.date; import java.util.list; public class NewsResponseData private ResponseVal response; private DataVal data; public ResponseVal getresponse() return response; public void setresponseval(responseval response) this.response = response; public DataVal getdata() return data; public void setdata(dataval data) this.data = data; class ResponseVal private boolean success; private int code; public boolean issuccess() return success; public void setsuccess(boolean success) this.success = success; public int getcode() return code; public void setcode(int code) this.code = code;

class DataVal private List<ResultVal> result; private int total; public List<ResultVal> getresult() return result; public void setresult(list<resultval> result) this.result = result; public int gettotal() return total; public void settotal(int total) this.total = total; class ResultVal private String id; private String type; private String date; private String title; public String getid() return id; public void setid(string id) this.id = id; public String gettype() return type; public void settype(string type) this.type = type; public String getdate() return date; public void setdate(string date) this.date = date; public String gettitle() return title; public void settitle(string title) this.title = title;

public long getnewsid() try String newsid = id.substring(id.lastindexof(":")+1,id.length()); return Long.parseLong(newsId); catch(exception e) return Long.MIN_VALUE;

HasNewsJob.java sınıfının içeriği: import java.io.stringreader; import java.nio.charset.charset; import java.text.simpledateformat; import java.util.calendar; import java.util.date; import java.util.iterator; import java.util.list; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import org.apache.commons.codec.binary.base64; import org.quartz.job; import org.quartz.jobexecutioncontext; import org.quartz.jobexecutionexception; import org.springframework.http.httpentity; import org.springframework.http.httpheaders; import org.springframework.http.httpmethod; import org.springframework.http.responseentity; import org.springframework.util.linkedmultivaluemap; import org.springframework.util.multivaluemap; import org.springframework.web.client.resttemplate; import org.w3c.dom.document; import org.w3c.dom.element; import org.xml.sax.inputsource; import com.aafinans.entity.news; import com.aafinans.main.responseclass; import com.google.gson.gson; public class HASNewsJob implements Job private RestTemplate resttemplate = new RestTemplate(); private final HttpHeaders userheader = createheaders("has_username","has_password"); // Basic authentication headeri olusturma private MultiValueMap<String, String> postparameters = createmultivaluemap(); // Default haber arama filtreleri ile, filterleri içeren mapin yaratılması private DocumentBuilder builder = null; public void execute(jobexecutioncontext context) throws JobExecutionException setparameters(startdate,enddate); // oluşturulan haber arama filtresi mapini istenilen degerler ile güncelleme.

NewsResponseData responsedata = getnewslist(); // filtrelere uygun haber listesini oluşturma if ( responsedata!= null && responsedata.getresponse().issuccess() ) getnews( responsedata ); throw new JobExecutionException("HAS Exception"); /** * Belirlenen filtrelere göre haber listesini oluşturma /** * Belirlenen filtrelere göre haber listesini oluşturma * @return */ private NewsResponseData getnewslist() NewsResponseData responsedata = null; try HttpEntity<?> requestentity = new HttpEntity<Object>(postParameters, userheader); ResponseEntity<String> out = resttemplate.exchange (FinanceProperties.getProperty("HAS_URL"), HttpMethod.POST, requestentity, String.class); String response = out.getbody(); responsedata = new Gson().fromJson(response, NewsResponseData.class); // olusturulan filtrelere göre apiden dönen cevabı, NewsResponseData objesine yükleme catch(exception e) responsedata = null; return responsedata; // oluşturulan haber listesindeki haberlerin ayrıntılı bilgilerine ulaşma private void getnews( NewsResponseData responsedata ) try

Iterator<ResultVal> iterator = responsedata.getdata().getresult().iterator(); while (iterator.hasnext()) ResultVal result = iterator.next(); HttpEntity<?> requestentity = new HttpEntity<Object>(userHeader); ResponseEntity<String> out = resttemplate.exchange ("https://api.aa.com.tr/abone/document/"+result.getid()+"/newsml29", HttpMethod.GET, requestentity, String.class); String body = out.getbody(); if ( builder == null ) builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); InputSource input = new InputSource( new StringReader( body ) ); Document document = builder.parse( input ); News news = new News(); al")); al")); news.setpriorityid(document.getelementsbytagname("priority").item(0).gettextcontent()); news.setlocated(((element)document.getelementsbytagname("located").item(0)).getattribute("liter news.setheader(result.gettitle()); news.setcreatedate(result.getnewsdate()); news.setcreator(((element)document.getelementsbytagname("creator").item(0)).getattribute("liter news.setnewsid(result.getnewsid()); news.setcontent(content); if ( content.indexof("<p>") > -1 && content.indexof("</p>") > -1) / news.setspot(content.substring(content.indexof("<p>")+3,content.indexof("</p>"))); else news.setspot(""); catch(exception e)

/** * @param username * @param password * @return */ private HttpHeaders createheaders( final String username, final String password ) return new HttpHeaders() String auth = username + ":" + password; byte[] encodedauth = Base64.encodeBase64( auth.getbytes(charset.forname("us-ascii")) ); String authheader = "Basic " + new String( encodedauth ); set( "Authorization", authheader ); ; /** * @param username * @param password * @return */ private MultiValueMap<String, String> createmultivaluemap() return new LinkedMultiValueMap<String, String>() this.add("start_date", "2013-03-12T22:00:00Z"); this.add("end_date", "NOW"); this.add("filter_type", "1"); this.add("filter_language", "1"); this.add("filter_package", "1"); ; private void setparameters(string startdate,string enddate) postparameters.set("start_date", startdate); postparameters.set("end_date", enddate);

NewsML Örnekleri NewML 1.2 formatında indirilen Örnek bir haber ait dosya yapısı aşağıdaki gibidir. <?xml version="1.0" encoding="utf-8"?> <NewsML> <NewsEnvelope> <DateAndTime>2013-04-25T14:05:57Z</DateAndTime> <Priority FormalName="3"/> </NewsEnvelope> <NewsItem> <Identification> <NewsIdentifier> <ProviderId>Anadolu Ajansı</ProviderId> <NewsItemId>38712</NewsItemId> <RevisionId PreviousRevision="" Update="1"/> <PublicIdentifier>aa:picture:20130425:37806</PublicIdentifier> </NewsIdentifier> </Identification> <NewsManagement> <NewsItemType FormalName="picture"/> <FirstCreated>2013-04-25T14:05:57Z</FirstCreated> <ThisRevisionCreated>2013-04-25T14:05:57Z</ThisRevisionCreated> <Status FormalName=""/> </NewsManagement> <NewsComponent Duid="Root" EquivalentsList="yes" xml:lang="bs_ba"> <NewsLines> <HeadLine>Pripadnici paravojnih snaga čuvaju straže u više iračkih gradova</headline> <CopyrightLine>Anadolu Ajansı</CopyrightLine> </NewsLines> <AdministrativeMetadata> <Provider> <Party FormalName="Anadolu Ajansı"/> </Provider> <Creator> <Party Euid="akrehmic" FormalName="Admir Krehmiç"/> </Creator> <Source> <Party FormalName="AAFOTO"/> </Source> <Property FormalName="NewsNumber" Value="38712"/> <Property FormalName="Priority" Value="R"/> <Property FormalName="Category" Value="GEN"/>

</AdministrativeMetadata> <DescriptiveMetadata> <Location HowPresent="Origin"> <Property FormalName="Country" Value="Turkey"/> <Property FormalName="City" Value="Iraq"/> </Location> </DescriptiveMetadata> <NewsComponent EquivalentsList="no"> <ContentItem Duid="Main_News"> <MediaType FormalName="xhtml"/> <DataContent>Naoružani pripadnici paravojnih formacija plemenskih snaga u nekoliko iračkih gradova čuvaju straže, kako tvrde, u cilju zaštite naroda od nasilja koje provodi premijer Nouri al-maliki. (STRINGER / ANADOLU AGENCY) (20130424)</DataContent> </ContentItem> </NewsComponent> <NewsComponent EquivalentsList="no"> <AdministrativeMetadata> <Creator> <Party FormalName="Admir Krehmiç"/> </Creator> </AdministrativeMetadata> <ContentItem Href="aa_picture_20130425_37806_high.jpg"> <MediaType FormalName="high"/> <Characteristics> <Property FormalName="Size" Value="2201632"/> </Characteristics> </ContentItem> <ContentItem Href="aa_picture_20130425_37806_web.jpg"> <MediaType FormalName="web"/> <Characteristics> <Property FormalName="Size" Value="2201632"/> </Characteristics> </ContentItem> <ContentItem Href="aa_picture_20130425_37806_high_w.jpg"> <MediaType FormalName="high_w"/> <Characteristics> <Property FormalName="Size" Value="2201632"/> </Characteristics> </ContentItem> <ContentItem Href="aa_picture_20130425_37806_web_w.jpg"> <MediaType FormalName="web_w"/> <Characteristics> <Property FormalName="Size" Value="2201632"/> </Characteristics>

</ContentItem> <ContentItem Href="aa_picture_20130425_37806_web_w.jpg"> <MediaType FormalName="web_w"/> <Characteristics> <Property FormalName="Size" Value="2201632"/> </Characteristics </ContentItem> </NewsComponent> </NewsComponent> </NewsItem> </NewsML>

NewML 2.9 formatında indirilen Örnek bir haber ait dosya yapısı aşağıdaki gibidir. <newsmessage xmlns="http://iptc.org/std/nar/2006-10-01/" version="1" xml:xsi="http://www.w3.org/2001/xmlschema-instance" xml:nonamespaceschemalocation="http://iptc.org/std/nar/2006-10-01/xsd/newsml-g2_2.9-spec- All-Core.xsd" standard="newsml-g2" standardversion="2.9" conformance="core" xml:lang="tr_tr"> <catalogref href="http://www.iptc.org/std/catalog/catalog.iptc-g2-standards_19.xml"/> <header> <sent>2013-04-25t11:59:55z</sent> <sender>aa.com.tr</sender> <priority>4</priority> <channel qcode="aapackage:1"> <name xml:lang="tr">genel</name> <name xml:lang="en">generic</name> <name < name />عام<" xml:lang="ar <name xml:lang="bs">generalni servis</name> <name xml:lang="ru">generic</name> </channel> </header> <itemset> <packageitem> <itemref residref="aa:text:20130425:37842"/> </packageitem> <newsitem guid="aa:text:20130425:37842" version="1" xml:lang="bs"> <rightsinfo> <copyrightholder literal="anadolu Ajansı"/> </rightsinfo> <itemmeta> <itemclass qcode="ninat:text"/> <provider literal="anadolu Ajansı"/> <versioncreated>2013-04-25t11:40:10z</versioncreated> <pubstatus qcode="stat:usable"/> <link rel="irel:seealso" residref="aa:picture:20130425:37806">

<itemclass qcode="ninat:picture"/> <title> Pripadnici paravojnih snaga čuvaju straže u više iračkih gradova </title> </link> <link rel="irel:seealso" residref="aa:picture:20130425:37807"> <itemclass qcode="ninat:picture"/> <title> Pripadnici paravojnih snaga čuvaju straže u više iračkih gradova </title> </link> <link rel="irel:seealso" residref="aa:video:20130425:37791"> <itemclass qcode="ninat:video"/> <title> Pripadnici paravojnih snaga čuvaju straže u više iračkih gradova </title> </link> </itemmeta> <contentmeta> <contentcreated>2013-04-25t11:40:10z</contentcreated> <located qcode="city:2014" type="cptype:city"> <name xml:lang="tr">musul</name> <name xml:lang="en">ninawa</name> <name ي نوى<" xml:lang="ar < name />ن <name xml:lang="bs">ninawa</name> <name xml:lang="ru">ninawa</name> <broader qcode="country:106" type="cptype:country"> <name xml:lang="tr">irak</name> <name xml:lang="en">iraq</name> <name عراق<" xml:lang="ar < name />ال <name xml:lang="bs">iraq</name> <name xml:lang="ru">ирак</name> </broader>

</located> <creator literal="admir Krehmiç,Emrah Yorulmaz,Mustafa Kerim" qcode="aarole:author"/> <language tag="bs"/> <subject qcode="aacat:gen" type="cpnat:descriptive"> <name xml:lang="tr">genel</name> <name xml:lang="en">generic</name> <name < name />عام<" xml:lang="ar <name xml:lang="bs">društvo</name> <name xml:lang="ru">generic</name> </subject> <subject qcode="aapackage:1" type="cpnat:descriptive"> <name xml:lang="tr">genel</name> <name xml:lang="en">generic</name> <name < name />عام<" xml:lang="ar <name xml:lang="bs">generalni servis</name> <name xml:lang="ru">generic</name> </subject> <keyword role="krole:index" xml:lang="bs">irak</keyword> <headline>irak: 14 poginulih u sukobima u Mosulu</headline> </contentmeta> <contentset> <inlinexml contenttype="application/nitf+xml"> <nitf xmlns="http://iptc.org/std/nitf/2006-10-18/"> <body> <body.head> <headline> <hl1>irak: 14 poginulih u sukobima u Mosulu</hl1> </headline> <byline> <byttl>admir Krehmiç,Emrah Yorulmaz,Mustafa Kerim</byttl>

</byline> </body.head> <body.content> <p>mosul </p><p>najmanje 14 osoba, od kojih su četvorica pripadnici Oružanih snaga Iraka, smrtno je stradalo u sukobu prosvjednika i vladinih snaga u iračkom gradu Mosulu, javio je dopsinik agencije Anadolija.</p><p>Zvaničnici iračke policije saopćili su kako je u sukobima prosvjednika i vladinih snaga sigurnosti poginulo 14 ljudi. Među poginulima je bilo deset prosvjednika i četiri vojnika. Do sukoba je došlo u različitim dijelovima Mosula.</p><p>Snage sigurnosti su u mjestu Karatepe koje pripada iračkoj regiji Salahuddin prisilile mještane da napuste svoje domove.</p><p>prosvjednici u Ramadi, s druge strane, organizirali su oružane straže i, kako su naveli, čuvaju narod od nasilja premijera Nourija al-malikija.</p> </body.content> </body> </nitf> </inlinexml> </contentset> </newsitem> </itemset> </newsmessage> Önemli Not: Bu klavuz içerisinde yer alan tüm görsel, bilgi ve diğer materyallerin telif hakkı Anadolu Ajansı na aittir. Bu klavuz bilgilendirme amaçlı olup klavuz içerisinde yer alan bilgiler hiçbir şekilde ticari amaçlı kullanılamaz, kopyalanamaz, dağıtılamaz, değiştirilemez.