2011-09-02 4 views
0

NSXML, JSON 등의 파싱 메서드에는 여러 가지가 있습니다. 나는 많은 방법과 혼동합니다. 그러니 나를 선택하여 그들을 선택하십시오. iPhone 응용 프로그램에서 이미지를 가져 와서 원격 서버에 업로드해야하는 경우 가장 적합한 파싱 방법은 무엇입니까 ??iPhone 응용 프로그램과 서버 간 이미지 전송

답변

0
  1. 를 사용하여 XML 이미지의 목록을 가져 오지합니다. (서버에 저장 또는 웹 서비스에서 그것을 얻을)
  2. 사용 NSXmlParser 구문 분석 및 이미지 URL을 얻을 수 있습니다.
  3. 이미지를 가져 오는 데 사용하십시오. [NSData dataWithContentsOfURL : < # (NSURL *) url #>] 또는 다음을 사용하십시오.

    NSURL *url = [NSURL URLWithString:[fileUrl 
    stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    [theRequest setHTTPMethod:@"POST"]; 
    
    webData = [[NSMutableData alloc] init]; 
    
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest  
    delegate:self startImmediately:YES]; 
    

또는 SOAP 코드

NSURL *url = [NSURL URLWithString:@"<URL>"]; 
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
    theRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 
    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content- Type"]; 
    [theRequest addValue: @"<ADD Value Here>" forHTTPHeaderField:@"SOAPAction"]; 
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 
    NSURLConnection theConnection = [[NSURLConnection alloc] initWithRequest:theRequest 
    delegate:self startImmediately:YES]; 

이상에서 당신의 요구로 일부 웹 서비스에 파일의 URL을 전달하고,이 파일 데이터가 다음에 바인딩을 통해 구문 분석과 함께 XML을 반환하는 경우 NSXmlParser 및 다음 메서드에서 데이터를 파일에 씁니다.

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

여기에 작성하시면 도움을받을 수 있습니다.

+0

비누 요청을 사용하여 완료 할 수 있습니까 ?? – Priyanshu

+0

예 .... 코드로 내 대답을 편집합니다 .... – Mohammad

+0

안녕하세요 ... 문제는 클라이언트가 이제는 전혀 웹 서비스가 없다고 말합니다. 그는 이미지 업로드를위한 두 개의 링크와 서버에서 돌아 오는 이미지 결과 세트를위한 두 개의 링크를 제공했습니다.내 iPhone 갤러리에서 3 개의 이미지를 업로드해야하고 주어진 이미지에 3 개의 이미지를 업로드하면 서버에서 여러 이미지를 다시 전송합니다. 이 경우 이미지를 업로드하고 이미지를 검색하는 방법에 대한 안내를 받으십시오 ... – Priyanshu

0

일반적으로 서버에서 오는 정보는 xml 또는 JSON 형식입니다.

NSXML 파서가 xml 데이터를 파싱하고 JSON 파서가 json 데이터를 파싱합니다. 그러나 이미지는 XML 또는 Json 형식이 아닙니다. 이미지는 서버에서 다운로드해야하는 바이트 청크입니다.

일반적으로 이미지 URL은 적절한 파서를 사용하여 구문 분석 될 xml 또는 json 데이터의 일부일 수 있습니다. 이미지의 URL을 얻으면 NSUrlConnection 또는 ASIHttpRequest (라이브러리)를 사용하여 이미지를 다운로드합니다.

0

비동기 요청을 수행하는 ASIHTTP 요청.
들어오는 JSON 객체를 원시 데이터 객체 (NSDictionaries 및 NSArrays)로 구문 분석하기위한 JSON Framework입니다.
UIImage *myDownloadedImage = [UIImage imageWithData:[requestObject responseData]]; 다운로드 한 이미지 데이터를 UIImage로 바꿉니다.

최근 프로젝트 중 일부 샘플 코드는 다음과 같습니다. 나는 ASIHTTPRequest.hJSON.h을 포함 시켰습니다.

NSString *projurl = [NSString stringWithFormat:@"%@mobile/project_details/?project=%@", WEBAPPURL, self.projectId]; 

__block ASIHTTPRequest *r = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:projurl]]; 
[r setCompletionBlock:^{ 
    self.projectData = [[r responseString] JSONValue]; 
    [self.tableView reloadData]; 
}]; 
[r startAsynchronous]; 
당신이 그 (것)들을, 첫 번째 안에 중첩 ANOTHER 완료 블록 내부의 반응 ... ASI의 새로운 블록의 아름다움을 처리 요청이 프로젝트와 관련된 이미지 URL을 골라, 그 완료 블록에 바로 돌아서 수

지향적 인 결과 처리는 모든 것이 한 곳에서 일어날 수 있고 공식 대리인 패턴의 세부 사항을 땀을 흘릴 필요가 없다는 것입니다.

startAsynchronous 호출 바로 전에 "로딩"UI 요소를 넣고 원하는 경우 completionBlock에서 제거 할 수 있습니다.

관련 문제