2013-01-03 3 views
0

이것은 웹에 응용 프로그램을 처음 연결 한 것입니다. 어떻게 작동하는지 분명히하고 싶습니다. MySQL 데이터베이스에서 온라인으로 데이터를 다운로드하고 싶습니다. 또한 php가 연결되어있는 것 같습니다 (hostgator)가 호스트입니다.xcode json 웹 요청 이해

단계는 다음과 같습니다. 1. php (서버 모듈)에서 연결된 PHP 모듈을 사용하여 mysql 정보를 JSON으로 변환하는 메소드를 설정합니다. 배열 (JSON 나는 mutilayered 사전 배열 객체가 생각) 엑스 코드에서

  1. 를 돌려, URL 요청 및 다운로드 데이터 JSON 오브젝트로 (또는 배열 또는 사전을 만드는 데 사용하는 사과의 JSON 프레임 워크?

  2. 데이터를 통해
  3. 이동 및 개체를 만들고 coredata에 저장합니다.

나 메신저가 제대로 논리를 다음과 같은 경우에 알려 주시기 바랍니다. 또한

JSON은 1 개의 객체 또는 mysql db의 모든 객체를 반환합니다. 그래서 내가 coredata에 10,000 개의 객체를 입력해야한다면 10,000 요청이나 요청 하나를 만들고 10,000 객체의 정보를 파싱해야합니다.

내가해야 할 일을 수행하는 가장 좋은 방법은 무엇입니까? HTTP 요청에 대해 들어 봤지만 복잡해 보입니다. 나는 그것이 무엇인지 전혀 모른다.

죄송합니다.

도움 주셔서 감사합니다.

답변

3

그러나 당신은 올바른 길을 가고 있습니다. 유사한 상황에서 내가 수행 할 작업을 설명합니다.

1 - PHP 엔진의 경우, 데이터에 액세스하기위한 API를 만들어야합니다. 어떤 데이터? 가장 단순하고 아마도 테스트 할 수있는 첫 번째 것 (테스트 목적으로 만 !!!!)는 ios APP에서 POST를 통해 쿼리를 받고 인코딩 된 JSON 문자열로 대답하는 페이지를 만드는 것입니다. JSON을 사용하면 객체의 전체 계층 구조를 전송할 수 있습니다. 변수, 배열, 사전은 객체 연결 방법을 결정할 때 결정합니다.

// first connect to the database and execute the query, then... 

$data = array(); 
while(!$RS->EOF){ 
for ($i = 0; $i < $cols; $i++){ 
    $rowName = utf8_encode($RS->Fields[$i]->name); 
    $rowValue = utf8_encode($RS->Fields[$i]->value); 
    $rowData[$rowName] = $rowValue; 
} 

array_push($data, $rowData); 
$RS->MoveNext(); 
} 

$response['data'] = $data; 
echo json_encode($response); 

결과가 "데이터"라는 이름의 키를 가진 최초의 사전와 JSON 개체입니다 : 당신이 인코딩 할 데이터가 테이블 인 경우 , 당신은이 비슷한 작업을 수행 할 수 있습니다. "data"키 안에는 사전 배열이 있습니다. 당신은 단순히 JSON 문자열을 만들로 json_encode를 사용할 수 있습니다

data =  (
      { 
     attivita = "this is the first row in the table"; 
     id = 2548; 
     }, 
      { 
     attivita = "this is the second row in the table"; 
     id = 2547; 
     }; 
} 

각 사전은 키의 열 이름, 데이터의 열 값을가집니다.

iPhone 측에서 AFNetworking을 다운로드하여 사용하는 것이 좋습니다.

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:@"http://url.for.the.php.page"]; 
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:mainPath parameters:params]; 


AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 

    // your success code here 

    // remember, the first object is a dictionary with a key called data 
    NSArray *arrayOfData = [JSON objectForKey:@"data"]; 

    NSMutableArray *arrayOfActivities = [NSMutableArray array]; 

    for (NSDictionary *objectDictionary in arrayOfData) { 
     // objectDictionary is your dictionary containing 
     // a key with the column name and a value with the column content 
     // here you can init your custom objects 

    } 


} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
    // your failure code here 
}]; 

[operation start]; 
: 그것은 HTTP/HTTPS 요청, XML, JSON의 ECC ... 당신은 유사한 방법으로 요청을 할 수 AFNetworking 사용을 위해 내장 객체 및 방법의 많은, 아주 좋은 완료 오픈 소스 프레임 워크입니다

보시다시피, JSONRequestOperationWithRequest : 메소드에는 완성 된 핸들러가있어 완성 된 핸들러를 사용하여 디코딩 된 JSON을 반환하므로 objectForKey 또는 objectAtIndex를 사용하여 사전/배열에 직접 액세스 할 수 있습니다 .-)

마지막 제안 : 프로덕션 및 보안 환경에서, 게시 요청에 대한 쿼리를 보내지 않아야합니다. 여기에 붙여 넣은 코드는 전용 응용 프로그램 (테스트 용도로 나만 사용)입니다. 각 요청 유형 및 보안 인증 방법에 대해 서로 다른 API를 사용하는 것이 좋습니다 (oAuth 참조). Instagram 또는 Twitter API (Instagram은 더 간단합니다)를 사용해 보도록 권합니다. 그들은 당신에게 당신 자신의 API를 만드는 방법에 대한 아이디어를 줄 것이다.

행운을 빌어 요.

2

JSON-ified MySQL 데이터를 반환하는 메소드를 만드는 첫 번째 단계가 정확합니다. 그러나 정확히이 반환되지만, 전적으로 귀하에게 달려 있습니다! JSON은 매우 유연한 형식이므로 거의 모든 형식의 데이터를 응답에 넣을 수 있습니다. PHP 모듈에서 여러 가지 방법을 사용하여 원하는 결과에 따라 여러 가지 방법을 사용할 수 있습니다. 예를 들어 책 데이터베이스가있는 경우 작성자를 지정할 수있는 메소드를 만들고 해당 작성자가 작성한 데이터베이스의 모든 책과 함께 JSON 응답을 리턴합니다.

당신은 실제로 당신의 모듈에 호출을 수행하는 HttpRequest를 사용할 수 있지만 사용하는 것은 매우 쉬운의 Obj-C NSURLRequest을 발견

NSURLRequest *request = [NSURLRequest requestWithURL: 
         [NSURL URLWithString:@"http://yoururl/books/38917"]]; 
[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

을 수동으로 JSON 응답을 구문 분석 할 필요가 있다고 생각하지 마십시오 자신의 Objective-C 객체로; 이것은 매우 일반적인 작업이며이를 수행 할 수있는 많은 훌륭한 라이브러리가 존재합니다. 가장 인기있는 솔루션 중 하나를 보려면 SBJSON 프레임 워크에서 this tutorial을 확인하십시오. 예를 들어

, 여기 당신이 쉬운 탐색을위한 NSDictionary에 JSON 응답을 구문 분석 할 수있는 방법입니다 :

그것을 할 수있는 많은 방법이 일부 :-) 다른 사람보다는 "더 정확한"있다,있다
// Create SBJSON object to parse JSON 
SBJSON *parser = [[SBJSON alloc] init]; 

// parse the JSON string into an object - assuming json_string is a NSString of JSON data 
NSDictionary *object = [parser objectWithString:json_string error:nil]; 
+0

URL 38917은 무엇입니까? 방법? –

+1

이것은 내가 작성한 번호 일 뿐이며 PHP 모듈 요청에 대한 예제 URL 구조입니다. URL 요청에 메소드 매개 변수가있는 것이 일반적이므로 선택한 번호는 DB에있는 객체의 고유 식별자와 같은 것을 나타낼 수 있습니다. –