2013-03-07 3 views
0

내가 API를 사용하여 나는이처럼 내 asp.net 웹 응용 프로그램에서 API를 호출을 만드는 중이라서 asp.net 사용하여 그들로부터 반응을 얻고 새로운 오전 : 내가 만든잘못된 JSON :

public ActionResult MakeCall() { 
      CallTRunkAPIResponse response = GET("https://apibetaus.calltrunk.com/api/v2/GetAccountSummarySimple?access_token=mytokenkeyhere"); 
      return Content("Make a call"); 
     } 

을 방법은 응답을 JSON 형식에 대한 응답을 전송하고 다음과 같은 자바 스크립트 시리얼 라이저를 사용하여 내 객체 타입으로 변환 :

public CallTRunkAPIResponse GET(string url) 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

     request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
     request.Headers.Add("X-Client:" + "header info from api here"); 
     request.Headers.Add("X-Authenticator-Session:" + "session key from api here"); 

     request.Method = "GET"; 

     request.ContentType = "application/json"; 
     try 
     { 
      WebResponse response = request.GetResponse(); 

      using (Stream responseStream = response.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
       //return reader.ReadToEnd(); 

       JavaScriptSerializer js = new JavaScriptSerializer(); 
       var objText = reader.ReadToEnd(); 
       CallTRunkAPIResponse myojb = (CallTRunkAPIResponse)js.Deserialize(objText, typeof(CallTRunkAPIResponse)); 
       return myojb; 
      } 
     } 
     catch (WebException ex) 
     { 
      WebResponse errorResponse = ex.Response; 
      using (Stream responseStream = errorResponse.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
       String errorText = reader.ReadToEnd(); 

       // log errorText 
      } 
      throw; 
     } 
    } 

} 

내 객체 (속성 내가이에 가지고해야하는지 응답 다음에 대해 잘 모릅니다이 같다 응답 클래스 :

public class CallTRunkAPIResponse { 

     public string Status { get; set; } 
     public string Content { get; set; } 
     public string Region { get; set; } 
    } 

응답은 다음과 같이해야하지만 오류 얻을 :

{ 
"Status":"OK", 
"Content":{ 
"Region":"beta.us", 
"CurrencyCode":"USD", 
"CurrencySymbol":"$", 
"Languages":["en"], 
"Version":{ 
"Api":{ 
"DisplayVersion":"2.0", 
"Version":3}, 
"Client":{ 
"ReportedVersion":0, 
"NewestVersion":2, 
"MinVersion":2} 
} 
} 
} 

그러나 나는이 오류가 무엇입니까 :에

System.ArgumentException: Invalid JSON primitive: . 

을 :

CallTRunkAPIResponse myojb = (CallTRunkAPIResponse)js.Deserialize(objText, typeof(CallTRunkAPIResponse)); 

답변

0

예외가 대부분입니다 아마도 서비스 호출로 인해 예외가 발생하고 except tion 문자열은 유효한 JSON 객체가 아니므로 응답을 구문 분석 할 수 없습니다.

  • 네트워크 호출이 정말 성공 했나 :

    는 다음을 확인? 실패한 경우 클라이언트에서의 예외 처리가 좋지 않고 예외 객체 응답을 JSON 객체로 캐스팅하려고하므로보고있는 오류 메시지가 표시 될 가능성이 있습니다.

  • 호출이 서버로 전달되어 예외가 발생했거나 호출 결과로 클라이언트에 오류 메시지가 다시 나타났습니다. 다시 유효한 JSON 개체가 아니므로 해당 메시지를 캐스팅 할 수 없습니다.