2017-11-19 8 views
0

에 저장하지, 그것을 조금 어렵게 찾았지만 게시물의 공정한 금액 읽는이를 소집 관리 : 다음 http://json2csharp.com/을 사용.NET API를 요청 며칠 동안 API를 학습에 노력하고 데이터베이스

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "ID,domain,contact,contactname,price,type,TF,CF,RI,MJTopicsID,UserTableID")] Identifier identifier) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Identifiers.Add(identifier); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
    "https://api.majestic.com/api/json?app_api_key=KEY&cmd=GetIndexItemInfo&items=1&item0=http://www.majestic.com&datasource=fresh"); 

    { 
     WebResponse response = request.GetResponse(); 
     using (Stream responseStream = response.GetResponseStream()) 
     { 
      StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
      string json2 = reader.ReadToEnd(); 
      MajesticData r = JsonConvert.DeserializeObject<MajesticData>(json2); 
     } 

     ViewBag.MJTopicsID = new SelectList(db.MJTopicss, "ID", "ID", identifier.MJTopicsID); 
     ViewBag.UserTableID = new SelectList(db.UserTables, "ID", "userIdentity", identifier.UserTableID); 
     return View(identifier); 
    } 
} 

을 내 모델을 만들고 RootObject를 MajesticData로 변경했습니다. 필자는이 테이블을 초기화 한 후 컨트롤러의 액션을 [httpPost] 안에서 실행했지만, 생성 액션은 잘 발생하고 식별자 테이블로 데이터를 커밋하고 뷰를 반환하지만 MajesticData 모델이나 다른 사람? 저장과

업데이트 : 당신은 당신의 MajesticData을 폐기하고

public ActionResult ApiCall() 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.majestic.com/api/json?app_api_key=KEY&cmd=GetIndexItemInfo&items=1&item0=http://www.majestic.com&datasource=fresh"); 
     { 
      WebResponse response = request.GetResponse(); 
      using (Stream responseStream = response.GetResponseStream()) 
      { 
       StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
       string json2 = reader.ReadToEnd(); 
       Datum newdata = JsonConvert.DeserializeObject<Datum>(json2); 
       db.Datums.Add(newdata); 
       db.SaveChanges(); 
      } 
     } 
    } 

답변

0

빨리 당신이 JSON에서 그것을 구성으로 객체. 데이터를 추출하여 ViewBag에 저장하거나 코드를 다른 곳에서 쓸 수있는 코드가 필요합니다.

그러나 나는 그것이 ModelState이 유효하지 않은 경우에만 API를 호출하는 것이 이상하게 보일 않습니다 말할 것이다 ... 답장을

+0

Nicoholson 감사! 오, 알았어, 나는이 스레드를 따라 갔다. https://stackoverflow.com/questions/34043384/easiest-way-to-parse-json-response. 그래서 객체의 모든 변수를 받아들이도록 모델을 만들었습니다. 어떻게하면 그 변수를 저장할 수 있습니까? 그래서 끝났습니다. http://json2csharp.com/에서 4 가지 클래스로 모델을 제공 한 이후로 가정했습니다. 미안 현실에서 간단하다면 그것을 알아낼 수 없습니다! – liamcook

+0

로컬 변수에 "저장"하는 것만으로는 충분하지 않습니다. 관련 속성을 ViewBag에 복사하여 클라이언트 용 페이지를 렌더링 할 때 사용할 수있게하거나 나중에 액세스해야 할 경우 데이터베이스 테이블에 쓸 수 있습니다. BTW WebClient.DownloadString() API를 호출 할 경우 코드를 짧게 만들 수 있습니다. –

+0

내가 이해하는 바로는 MajesticData 모델과 동일한 변수를 가진 객체를 생성하지 않는다는 것인데, 이것을 바로 데이터베이스에 저장하는 방법이 없을까요? 데이터가있는 위치를 정확하게 파악하지 못했습니다.이 점이 내 문제입니다. 아 감사합니다! 그래, 나는 그것이 유효하지 않은 상태에 있다는 것을 깨닫지 못해 코드를 찾아 내려고 너무 많은 시간을 보냈다. 그래서 그것은 하하 (haha)라고 불려지지 않았다 ... – liamcook