2011-07-05 13 views

cevap

9

Uygulamanız gerçek sorguyu gerçekleştirmiyor. Bunu yapmanın uygun yolu, web siteniz için bir API oluşturmaktır, böylece site sorgulamayı yapar ve uygulamanıza uygun verileri döndürür.

API'niz genellikle uygulamanız için biçimlendirilmiş verileri döndüren bir dizi uç noktadan oluşacaktır. Örneğin, belirli bir kullanıcının tüm yayınları için veritabanınızı sorgulayan ve bunları bir JSON veya XML kodlu diziye döndüren bir PHP veya Python sayfası oluşturabilirsiniz. (Veri formatı tamamen size kalmış. IOS için kullanılabilen her iki formatı ayrıştıran çerçeveler var.)

Örneğin, sunucunuzda haftanın geçerli gününü döndüren bir PHP sayfanız olduğunu varsayalım. PHP şöyle görünecektir:

<?php 
    echo date("l"); 
?> 

Diyelim ki senin uygulama içinden HTTP isteklerini gerçekleştirmek için ASIHTTPRequest çerçevesini kullanmanızı tavsiye http://example.com/dayoftheweek.php

olarak bu kaydettikten olduğunu düşünelim. Bu, devam edelim ve PHP sayfanıza bir bağlantı kuralım.

NSURL *url = [NSURL URLWithString:@"http://example.com/dayoftheweek.php"] 
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url]; 
[request setDelegate:self]; 

Şimdi, döndürülen verileri ayrıştırmak için, ASIHTTPRequest Delege yöntemleri uygulamak gerekir: Eğer ASIHTTPRequest hepsi burada, projenizde kurdunuz varsayarsak gibi bir istek göründüğü aşağıda. Tamamlanmış bir isteği yerine getiren yöntem burada gösterilmiştir:

- (void)requestFinished:(ASIHTTPRequest *)request{ 
    //Here you would store the returned data and/or parse it 
} 

bir API uygulamak için PHP sayfaları daha karmaşık olacaktır. Sen değişkenler ve böyle ileterek daha karmaşık bir istek kuracağına ve PHP sayfası talep ettiğiniz verileri dönen normal bir web servisi gibi hareket edecekti.

+0

arıyorum ama ne tür http istekleri? API’yı tam olarak nasıl yaparım? bu php mi? Bunu yapmanın bir yolu örneği ne olurdu? – StanLe

+0

Gerçekten de yinelenen bir cevaba ihtiyacı olduğunu düşünmüyorum. – pt2ph8

+0

@StanLe - Temel bir örnekle güncelledik. @ pt2ph8 - Ben de öyle düşünmüyorum, bu yüzden cevabımı güncelledim. ;-) – Moshe

0

Sanırım MySQL'i kastediyorsunuz. Genellikle MySQL veritabanlarına erişim dışarıdan ve iyi bir sebepten dolayı yasaktır. Bunun yerine veritabanınıza erişen bir API yazmak isteyebilirsiniz. IPhone uygulamanız veri eklemek ve almak için bu API ile iletişim kuracaktır.

+0

Peki ne tür API? Bazı php betikleri gibi bir şey yapar mıyım? – StanLe

+0

Evet. Yapabileceğiniz en basit şey, ona ilettiğiniz parametrelere dayanarak JSON veya XML formatlı verileri döndüren bir PHP betiğidir. Ardından, ASIHTTPRequest artı bir çok JSON ve XML kütüphanesinden birini kullanarak uygulamanızdan bu verileri ayrıştırıyorsunuz (JSON için YAJL ve XML için GData'yı öneriyorum) ve bununla bir şeyler yapın. – pt2ph8

+0

Web servislerini kullanabilirsiniz. Sunucu veritabanından bazı kullanıcılar için bir kimlik almak istediğinizi söyleyelim. Bunu başarmak için bir web servis API'si olabilir - (NSNumber *) IDForUserWithName: (NSString *) kullanıcı adı. Bu çağrı, veritabanından geçirilen kullanıcı adı için kimliği dahili olarak getiren sunucunuza gider. – Subhash

0

@StanLe: Doğrudan yerel uygulama içinde SQL Server veya mySQL kullanamazsınız. Ancak uygulamanızı aşağıdaki yollarla harici SQL veritabanlarıyla iletebilirsiniz.

  1. PHP, veya C# veya XML dosyası sağlayan herhangi bir araç kullanarak XML API oluşturun.
  2. XML sayfasının etiketleri okuyabilir, hangi xcode bazı ayrıştırıcı (NSXMLParser) kullanın.

İşte Burada example

olduğunu sample Code

bir başka Çok Simple Example

hala varsa karışıklık geri yazınız.

+0

PHP ile biraz tanıdık ve PHP'de SQL sorguları yaptım. Beni ilgilendiren tek şey, sorgunun sonuçlarını konsola (bilgisayar ekranına) yazdım. Bu sonuçları nasıl tamamlayıp Objective-C'de okurum? – StanLe

+0

, kullandığınız veritabanı ve platform ve yerel uygulamada görmek istediğiniz sonuçlar gibi bazı ayrıntıları anlatabilir misiniz? – Xorsat

+0

Mükemmel bağlantılar. Kalabildiğim tek şey, sunucumda bir php dosyasını nasıl çalıştıracağım gibi, www.mysite.com/myfile.php gibi objektif-c'den nasıl çalıştırılacağı ve sonuçların geri alınabileceği. Veritabanını sorgulamak için kullanılacak belirli bir girişle (isim gibi) bir php dosyası çalıştırabilmek istiyorum. Sonra PHP MySQL veritabanımdan bir satır döndürecek. O zaman Amacım-C bu sonucu alacaktır. – StanLe

0

herhangi bir dış veritabanı ile iletişim kurmak için kullanılan bir yaklaşım (biz API olarak burada aradığınız) Webservices üzerinden gerçekleştirilir. Normalde sunucudaki bir işlev çağrısı ve Sunucu istenen verileri size cevap sunucuya bir istek yapmak.

This'dan geçebilirsiniz. PHP ve diğer ilgili terimler söz konusu olduğunda, biraz çaba harcamanız ve bazı kodlarınızda google olmanız gerekir. This da bazı kullanım olabilir. Normalde iPhone için yazılan web servisleri iPhone için XML/JSON kullanıyor. JSON/XML ayrıştırıcısı kullanılabilir

İlgili konular