2011-07-05 7 views

Odpowiedz

9

Twoja aplikacja nie wykonuje faktycznego zapytania. Właściwym sposobem na to jest skonfigurowanie interfejsu API dla witryny, aby witryna przeprowadzała kwerendy i zwracała odpowiednie dane do aplikacji.

Twoje API zazwyczaj składa się z wielu punktów końcowych, które zwracają dane sformatowane dla Twojej aplikacji. Na przykład możesz utworzyć stronę PHP lub Python, która zapyta bazę danych o wszystkie posty dla danego użytkownika i zwróci je w tablicy z kodowaniem JSON lub XML. (Format danych zależy wyłącznie od Ciebie. Istnieją ramy do analizowania obu formatów dostępnych dla systemu iOS.)

Załóżmy na przykład, że na serwerze znajduje się strona PHP zwracająca bieżący dzień tygodnia. Twój PHP będzie wyglądać mniej więcej tak:

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

Wyobraźmy sobie, że masz zapisane to jako http://example.com/dayoftheweek.php

Polecam pomocą ASIHTTPRequest ramy wykonywania żądania HTTP z poziomu aplikacji. To powiedziawszy, przejdźmy dalej i skonfigurujmy połączenie z twoją stroną PHP. Zakładając, że ASIHTTPRequest wszystko skonfigurować w projekcie, oto co może wyglądać jak prośba:

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

Teraz trzeba zaimplementować metody ASIHTTPRequest delegowana do analizowania zwracanych danych. Metoda obsługi zakończonego żądania jest wyświetlana tutaj:

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

Aby zaimplementować interfejs API, strony PHP byłyby bardziej złożone. Zbudowałbyś bardziej złożoną prośbę, przekazując zmienne i takie, a strona PHP działałaby jak zwykła usługa sieciowa, zwracając żądane dane.

+0

, ale jaki typ żądań http? jak dokładnie mogę utworzyć interfejs API? czy to php? jaki byłby przykład tego sposobu? – StanLe

+0

Nie sądzę, że naprawdę potrzebował duplikowanej odpowiedzi. – pt2ph8

+0

@StanLe - zaktualizowałem podstawowy przykład. @ pt2ph8 - Ja też tak nie uważam, dlatego zaktualizowałem swoją odpowiedź. ;-) – Moshe

0

Myślę, że masz na myśli MySQL. Zwykle dostęp do baz danych MySQL jest zabroniony z zewnątrz i nie bez powodu. Zamiast tego możesz napisać interfejs API, który uzyskuje dostęp do bazy danych. Twoja aplikacja na iPhone'a będzie komunikować się z tym interfejsem API w celu wstawiania i pobierania danych.

+0

A więc jaki rodzaj interfejsu API? Czy zrobiłbym coś w rodzaju skryptów php? – StanLe

+0

Tak. Najprostszą rzeczą, jaką możesz zrobić, to skrypt PHP, który zwraca dane w formacie JSON lub XML w oparciu o parametry, które do niego przesyłasz. Następnie analizuj dane z aplikacji przy użyciu ASIHTTPRequest plus jednej z wielu bibliotek JSON i XML w pobliżu (polecam YAJL dla JSON i GData dla XML) i zrób coś z tym. – pt2ph8

+0

Możesz korzystać z usług internetowych. Powiedzmy, że chcesz uzyskać ID dla jakiegoś użytkownika z bazy danych serwera. Aby to osiągnąć, może istnieć usługa internetowa API - (NSNumber *) IDForUserWithName: (NSString *) nazwa użytkownika. To połączenie jest przekazywane do serwera, który wewnętrznie pobiera identyfikator dla nazwy użytkownika przekazanej z bazy danych. – Subhash

0

@StanLe: Nie można bezpośrednio używać aplikacji SQL Server lub mySQL w macierzystej aplikacji. Jednak możesz komunikować swoją aplikację z zewnętrznymi bazami danych SQL w następujący sposób.

  1. Utwórz XML API za pomocą PHP, C# lub dowolnego narzędzia, które zapewnia plik XML w wyniku.
  2. Użyj parsera (NSXMLParser) w kodzie xcode, który może odczytać znaczniki strony XML.

Oto example

Oto sample Code

Innym bardzo Simple Example

jeśli nadal każdy zamieszanie proszę odpisać.

+0

Jestem trochę obeznany z PHP i wcześniej wykonałem zapytania SQL w PHP. Jedyne, co mnie martwi to to, że wydrukowałem wyniki zapytania do konsoli (na ekranie komputera). Jak zawinąć wyniki i przeczytać je w Objective-C? – StanLe

+0

czy możesz podać mi jakieś szczegóły, takie jak baza danych i platforma, z których korzystasz, i jakie wyniki chcesz zobaczyć w natywnej aplikacji? – Xorsat

+0

Doskonałe linki. Jedyne, co utknąłem, to jak uruchomić plik php na moim serwerze, taki jak www.mysite.com/myfile.php z obiektu c, i otrzymać wyniki z powrotem. Chcę móc uruchomić plik php z konkretnym wejściem (takim jak nazwa), który będzie używany do wysyłania zapytań do bazy danych. Następnie PHP zwróci wiersz z mojej bazy danych MySQL. Wtedy mój Cel-C dostanie ten wynik. – StanLe

0

Podejście używane do komunikacji z dowolną zewnętrzną bazą danych odbywa się za pośrednictwem usługi Webservices (którą nazywamy tutaj API). wysyłasz żądanie do serwera, który zwykle jest wywołaniem funkcji na serwerze, a serwer odpowiada na żądane dane.

Możesz przejść przez This. Tak daleko, jak PHP i inne stosowne pojęcia są związane, będziesz musiał podjąć pewne wysiłki i google trochę kodu. This może również być przydatny. Zwykle serwisy internetowe napisane dla iPhone'a korzystają z XML/JSON dla iPhone'a. Parser JSON/XML jest dostępny

Powiązane problemy