블 로그 원 클 라 이언 트 (Universal App) 개발 에 세이 - 데이터 기반 준비
23641 단어 APP
블 로그:http://wcf.open.cnblogs.com/blog/help뉴스:http://wcf.open.cnblogs.com/news/help
블 로그 가든48 시간 읽 기 순위 예 를 들 어 돌아 오 는 Xml 는 다음 그림 (RSS, IE 로 열 면 구독 을 알려 줍 니 다..)
블 로그 원 의 대부분 API 는 RSS (페이지 도 제공 합 니 다!) 로 되 돌아 갑 니 다. 간단 한 RSS reader 만 하면 직접 사용 할 수 있 습 니 다 SyndicationClient. RetrieveFeedAsync 이후 XML 을 SyndicationFeed 로 해석 합 니 다.
그러나 바 인 딩 이 편리 하고 다른 비 RSS API 를 병행 하기 위해 서 는 실체 류 를 사용자 정의 한 다음 XmlSerializer 반 직렬 화 를 사용 합 니 다. 반 직렬 화 를 사용 하면 XmlDocument 나 linq to xml 로 해석 하 는 코드 를 절약 할 수 있 습 니 다.
프로젝트 만 들 기:
유 니 버 설 앱 을 만 들 려 고 하기 때문에 이식 가능 한 라 이브 러 리 (Portable for Universal Apps) 를 만 듭 니 다.
이 라 이브 러 리 는 원래 PCL 이 라 고 불 렸 지만 기본적으로 지원 하 는 것 은 윈도 8.1 과 윈도 폰 8.1 뿐 이 었 다.
실체 류
RSS 를 되 돌려 주 는 API 에 대해 서 는 먼저 feed < T > 클래스 를 정의 해 야 합 니 다. feed 의 기본 정 보 를 포함 하고 Entries 속성 은 XML 의 모든 entry 노드 에 대응 합 니 다. 일반적인 이 유 는 많은 entry 의 속성 이 다 르 기 때 문 입 니 다.
// Feed<T> feed , ,
[XmlRoot("feed", Namespace = "http://www.w3.org/2005/Atom")]
public class Feed<T>
{
// Id feed/id
[XmlElement("id")]
public string Id { get; set; }
[XmlElement("title")]
public string Title { get; set; }
// XmlSerializer feed entry , List
[XmlElement("entry")]
public List<T> Entries { get; set; }
}
Feed < T > 가 있 으 면 블 로 거 를 추천 하 는 Blogger 와 같은 다양한 API 에 대해 실체 류 를 정의 합 니 다.
// root namespace , Feed , Feed<Blogger>
[XmlRoot("entry")]
public class Blogger
{
[XmlElement("id")]
public string Id { get; set; }
[XmlElement("title")]
public string Name { get; set; }
[XmlElement("updated")]
public string UpdateTimeString { get; set; }
[XmlElement("link", typeof(Link))]
public Link Link { get; set; }
[XmlElement("blogapp")]
public string BlogApp { get; set; }
[XmlElement("avatar")]
public string Avatar { get; set; }
[XmlElement("postcount")]
public string PostCount { get; set; }
[XmlIgnore]
public DateTime UpdateTime
{
get { return Functions.ParseDateTime(this.UpdateTimeString); }
}
}
뉴스 와 블 로그 의 대부분 속성 이 같 기 때문에 우 리 는 Entry Base 기본 클래스 (이름 을 짓 는 것 이 가장 골 치 아 픕 니 다.) 를 정 의 했 습 니 다. 다른 것 은 우리 의 github 소스 코드 를 참고 할 수 있 고 주 소 는 글 끝 에 있 습 니 다.
[XmlRoot(ElementName = "entry")]
public class EntryBase
{
[XmlElement("id")]
public string ID { get; set; }
[XmlElement("title")]
public string Title { get; set; }
[XmlElement("summary")]
public string Summary { get; set; }
[XmlElement("published")]
public string PublishTimeString { get; set; }
[XmlElement("link", typeof(Link))]
public Link Link { get; set; }
[XmlElement("blogapp")]
public string BlogApp { get; set; }
[XmlElement("diggs")]
public string DiggsCount { get; set; }
[XmlElement("views")]
public string ViewsCount { get; set; }
[XmlElement("comments")]
public string CommentsCount { get; set; }
[XmlIgnore]
public PostStatus Status{ get; set; }
[XmlIgnore]
public DateTime PublishTime
{
get
{
return Functions.ParseDateTime(this.PublishTimeString);
}
}
}
그 중에서 도 UpdateTime 이 주의해 야 할 것 은 블 로그 원 의 일부 API 가 되 돌아 오 는 DateTime 문자열 이 역 직렬 화 할 때 오류 가 발생 할 수 있 기 때문에 여기 서 직접 string (여기 서 게 으 름 을 피 웠 다..) 을 사용 한 다음 에 응용 프로그램 에서 사용 할 때 스스로 해석 합 니 다.
RSS 가 아 닌 뉴스 내용:
XmlElement Attribute 가 노드 이름 을 쓰 지 않 았 다 면 노드 이름과 속성 이름 이 같다 는 것 을 설명 합 니 다. 아래 Xml 와 같 습 니 다.
<?xml version="1.0" encoding="utf-8"?><NewsBody xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Title>90 : </Title><SourceName> </SourceName><SubmitDate>2014-12-15 16:30:59</SubmitDate><Content> , ...</Content><ImageUrl>http://images.cnitblog.com/news/66372/201412/151630299226167.jpg</ImageUrl><PrevNews>510939</PrevNews><NextNews/><CommentCount>0</CommentCount></NewsBody>
public class NewsBody
{
[XmlElement]
public string SubmitDateString { get; set; }
[XmlElement]
public string Content { get; set; }
[XmlElement]
public string ImageUrl { get; set; }
[XmlElement]
public string PrevNews { get; set; }
[XmlElement]
public string NextNews { get; set; }
[XmlElement]
public string CommentCount { get; set; }
[XmlElement]
public string Title { get; set; }
[XmlIgnore]
public DateTime SubmitDate
{
get {
return Functions.ParseDateTime(this.SubmitDateString);
}
}
}
public class NewsBody
{
[XmlElement]
public string SubmitDateString { get; set; }
[XmlElement]
public string Content { get; set; }
[XmlElement]
public string ImageUrl { get; set; }
[XmlElement]
public string PrevNews { get; set; }
[XmlElement]
public string NextNews { get; set; }
[XmlElement]
public string CommentCount { get; set; }
[XmlElement]
public string Title { get; set; }
[XmlIgnore]
public DateTime SubmitDate
{
get {
return Functions.ParseDateTime(this.SubmitDateString);
}
}
}
Http 데이터 요청
현재 winrt 에서 Http 데이터 요청 을 실현 할 수 있 는 종 류 는 최소 3 개 입 니 다. WebRequest, Windows. Web. Http. Http. Http Client 와 System. Net. Http. Http Client 와 System. Net. Http. Http Client 입 니 다.
윈도 우즈. Web. Http. HttpClient 라 는 새로 추 가 된 클래스 를 사용 하 는 것 을 권장 합 니 다. 다른 HttpClient 는 다음 버 전에 서 삭 제 될 수 있 습 니 다. MSDN 이 점 에 대해 전문 적 인 알림 이 있 습 니 다. WebRequest 사용 에 있어 서 는 새로운 HttpClient 가 편리 하지 않 습 니 다.
HttpClient 는 자주 사용 하 는 Http 요청 방법 을 제공 합 니 다: GetAsync, DeleteAsync, PostAsync 와 GetStringasync. 그 중에서 GetStringasync 는 XML / JSon 을 요청 할 때 상당히 편리 합 니 다. response. content 에서 string 으로 전환 하 는 과정 을 줄 였 습 니 다. (그러나 HttpStatusCode 를 얻 지 못 하고 실 수 를 했 습 니 다.) 다음 과 같이 사용 합 니 다.
HttpClient client = new HttpClient();
try
{
string xmlString = await client.GetStringAsync(new Uri(“API URL here”));
}
catch(Exception)
{
//
}
데이터 요청 은 이렇게 간단 하고 나머지 는 서로 다른 수요 에 따라 API 의 URL 을 연결 하 는 것 이다.
PS: 네트워크 가 사용 되 지 않 을 때 System. Exception 을 던 져 달라 고 요청 합 니 다. 오류 코드 를 가지 고 있 습 니 다. 이 이상 을 포착 해 야 한 다 는 것 을 기억 하 십시오.
작은 매듭
HttpClient 를 사용 하여 Xml 데 이 터 를 얻 는 것 은 매우 간단 하 며, XmlSerializer 가 있 으 면 Xml 에서 실체 류 까지 의 매 핑 과정 을 간소화 할 수 있 습 니 다.계속 지 켜 봐 주세요.
Windows Phone Store App link:
http://www.windowsphone.com/zh-cn/store/app/블 로그 원 - up / 500 f08f0 - 5be8 - 4723 - aff 9 - a397beee52fc
Windows Store App link:
http://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059
GitHub open source link:
https://github.com/MS-UAP/cnblogs-UAP
MSDN Sample Code:
https://code.msdn.microsoft.com/CNBlogs-Client-Universal-477943ab
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ural(Timus) 1463. Happiness to People!트리 DP 제목: n과 m를 입력하면 n개 도시를 나타내고 m조는 방향이 없고 다음 줄은 n개의 숫자를 나타내며 각 도시의 권한을 나타낸다. 다음 m줄은 각 변의 정보, u, v, w, 정점과 변권이다.한 도시에서 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.