2012-11-19 4 views
1

WCF RESTful 서비스가 있으며 서버 및 다양한 클라이언트에서 오류를 처리하는 방법을 보여주고 자합니다. 이 서비스는 웹 (jQuery)과 iOS 제품 모두에서 액세스 할 수 있습니다. 여기에서 살펴이다 나는 서비스에 오류를 던지고있어 방법 :WCF REST Service 및 NOSrror를 사용한 iOS 오류 처리

[WebGet(UriTemplate = "get/{id}", ResponseFormat = WebMessageFormat.Json)] 
    public Person Get(string id) 
    { 
     //check security 
     if(!SecurityHelper.IsAuthenticated()) { throw new WebFaultException<PersonException>(new PersonException { Reason = "Permission denied." }, HttpStatusCode.Unauthorized); } 

가 나는 등 같은 서비스를 호출하는 jQuery를 사용할 수 있습니다

 $.ajax({ 
      type: "GET", 
      dataType: "json", 
      url: "/person/get/123", 
      success: function(data) { 
      alert('success'); 
      }, 
      error: function(xhr, status, error) { 
      alert("AJAX Error!"); 
      alert(xhr.responseText); 
      } 
     }); 
     }); 

을 ... 모든 것이 잘 작동 - 전화 (인증을 제공하지 않았으므로) 오류가 발생하고 콜백이 호출됩니다. 오류 콜백에서 xhr.responseText를 검사 할 때 서버에서 제공 한 오류 이유를 나타내는 올바른 JSON 개체 ({ "이유": "사용 권한이 거부되었습니다!"})가 나타납니다.

지금 - 나는 같은 서비스를 호출하기 위해 함께 내 iOS 앱을 넣어려고 모든 것을 내가 서비스에 의해 공급 된 오류 정보를 얻을 수 제외 뿐만 아니라 거기에서 큰 노력하고 있습니다. 여기에 내가 아이폰 OS에서 REST 서비스에 대한 내 전화에있는 코드는 다음과 같습니다. "작업을 완료 할 수 없습니다"와 같은 난 단지 일반적인 메시지를 받고있어 error.description에서

//set up for any errors 
NSError *error = nil; 

//set up response 
NSURLResponse *response = [[NSURLResponse alloc] init]; 

//make the request 
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

//check for error 
if(error) 
{ 
    //debug 
    NSLog(error.description); 

    //send back error 
    return error; 
} 
else 
{ 

서버에서 보낸 사용자 지정 오류 정보를 얻으려면 어떻게해야합니까? 나는 NSError 클래스의 userInfo 속성을 살펴 봤지만 맞춤 정보를 얻을 수 있는지 파악할 수 없으며, 그렇다면 어떻게하는지에 대해 알 수 없습니다.

미리 도움을 청하십시오.

답변

1

오류 메시지는 요청 (응답 본체)에 의해 반환 된 데이터에있을 것입니다 :

//make the request 
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

if (error) { 
    if (data) { 
     NSString *respBody = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    } else { 
     NSLog(@"%@", error.description); 
    } 
} 
else 
{ 
    // get response 
} 
+0

네는 확인하고는 확실하다. 대단히 고마워요 ... 고맙습니다. –