2013-04-07 2 views
1

Google Elevations API로 RestSharp를 성공적으로 사용해 본 후 Flickr API에서 사용해 보았습니다. Elevations API의 경우 XML 응답에서 Elevation 쿼리로 파생 된 POCO 클래스 집합을 만들었습니다. 나는 Flickr API에 대해서도 똑같이하고 싶다. (멋진 FlickrNet이 있다는 것을 알고 있지만 RestSharp를 사용해보고 싶었습니다.)Flickr API 응답 및 RestSharp의 POCO 클래스

작동하는 POCO 클래스 버전이 있지만 정보가 누락되었습니다. 여기

는 XML에 대한 응답 : 여기

<?xml version="1.0" encoding="utf-8" ?> 
<rsp stat="ok"> 
    <photos page="1" pages="2" perpage="100" total="117"> 
    <photo id="8626881695" owner="[email protected]" secret="e82b58b22f" server="8519" farm="9" title="IMG_3149.JPG" ispublic="1" isfriend="0" isfamily="0" latitude="51.507431" longitude="-0.122815" accuracy="16" context="0" place_id="I.7fkAxTUrq7FstgaA" woeid="20094318" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_t.jpg" height_t="100" width_t="100" url_s="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_m.jpg" height_s="240" width_s="240" url_q="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f.jpg" height_m="500" width_m="500" url_n="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_n.jpg" height_n="320" width_n="320" url_z="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_z.jpg" height_z="640" width_z="640" url_c="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_c.jpg" height_c="800" width_c="800" url_l="http://farm9.staticflickr.com/8519/8626881695_e82b58b22f_b.jpg" height_l="1024" width_l="1024" url_o="http://farm9.staticflickr.com/8519/8626881695_a923d82fe6_o.jpg" height_o="2112" width_o="2112" /> 
    <photo id="8626886683" owner="[email protected]" secret="f308e6462c" server="8240" farm="9" title="" ispublic="1" isfriend="0" isfamily="0" latitude="51.507236" longitude="-0.122338" accuracy="16" context="0" place_id="I.7fkAxTUrq7FstgaA" woeid="20094318" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_t.jpg" height_t="100" width_t="100" url_s="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_m.jpg" height_s="240" width_s="240" url_q="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8240/8626886683_f308e6462c.jpg" height_m="500" width_m="500" url_n="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_n.jpg" height_n="320" width_n="320" url_z="http://farm9.staticflickr.com/8240/8626886683_f308e6462c_z.jpg" height_z="612" width_z="612" url_o="http://farm9.staticflickr.com/8240/8626886683_c98a1a9f02_o.jpg" height_o="612" width_o="612" /> 
    <photo id="8626885149" owner="[email protected]" secret="4dde1595e4" server="8387" farm="9" title="IMG_3147.JPG" ispublic="1" isfriend="0" isfamily="0" latitude="51.509048" longitude="-0.124458" accuracy="16" context="0" place_id="aOppNH9QV7zH7w" woeid="15652" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_t.jpg" height_t="100" width_t="100" url_s="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_m.jpg" height_s="240" width_s="240" url_q="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4.jpg" height_m="500" width_m="500" url_n="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_n.jpg" height_n="320" width_n="320" url_z="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_z.jpg" height_z="640" width_z="640" url_c="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_c.jpg" height_c="800" width_c="800" url_l="http://farm9.staticflickr.com/8387/8626885149_4dde1595e4_b.jpg" height_l="1024" width_l="1024" url_o="http://farm9.staticflickr.com/8387/8626885149_8f928ce11a_o.jpg" height_o="2112" width_o="2112" /> 
    <photo id="8626825995" owner="[email protected]" secret="0ba9a79f43" server="8262" farm="9" title="Heroes Salute" ispublic="1" isfriend="0" isfamily="0" latitude="51.503119" longitude="-0.149366" accuracy="16" context="0" place_id="yy7TEQtVUbhVOw" woeid="43246" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_t.jpg" height_t="75" width_t="100" url_s="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_m.jpg" height_s="180" width_s="240" url_q="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43.jpg" height_m="375" width_m="500" url_n="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_n.jpg" height_n="240" width_n="320" url_z="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_z.jpg" height_z="480" width_z="640" url_c="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_c.jpg" height_c="600" width_c="800" url_l="http://farm9.staticflickr.com/8262/8626825995_0ba9a79f43_b.jpg" height_l="768" width_l="1024" url_o="http://farm9.staticflickr.com/8262/8626825995_309be230ce_o.jpg" height_o="2313" width_o="3085" /> 
    <photo id="8626826765" owner="[email protected]" secret="a14c1a395c" server="8526" farm="9" title="Long Overdue" ispublic="1" isfriend="0" isfamily="0" latitude="51.503173" longitude="-0.149318" accuracy="16" context="0" place_id="yy7TEQtVUbhVOw" woeid="43246" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_t.jpg" height_t="100" width_t="75" url_s="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_m.jpg" height_s="240" width_s="180" url_q="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c.jpg" height_m="500" width_m="375" url_n="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_n.jpg" height_n="320" width_n="240" url_z="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_z.jpg" height_z="640" width_z="480" url_c="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_c.jpg" height_c="800" width_c="600" url_l="http://farm9.staticflickr.com/8526/8626826765_a14c1a395c_b.jpg" height_l="1024" width_l="768" url_o="http://farm9.staticflickr.com/8526/8626826765_7db667a6ed_o.jpg" height_o="3121" width_o="2340" /> 
    <photo id="8626843195" owner="[email protected]" secret="bf3c7309a5" server="8104" farm="9" title="Bus Bonus" ispublic="1" isfriend="0" isfamily="0" latitude="51.503319" longitude="-0.149323" accuracy="16" context="0" place_id="yy7TEQtVUbhVOw" woeid="43246" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_t.jpg" height_t="100" width_t="75" url_s="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_m.jpg" height_s="240" width_s="180" url_q="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5.jpg" height_m="500" width_m="375" url_n="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_n.jpg" height_n="320" width_n="240" url_z="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_z.jpg" height_z="640" width_z="480" url_c="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_c.jpg" height_c="800" width_c="600" url_l="http://farm9.staticflickr.com/8104/8626843195_bf3c7309a5_b.jpg" height_l="1024" width_l="768" url_o="http://farm9.staticflickr.com/8104/8626843195_601d42bdd2_o.jpg" height_o="3067" width_o="2300" /> 
    <photo id="8626786831" owner="[email protected]" secret="c30d6881bf" server="8261" farm="9" title="Breaking the girl" ispublic="1" isfriend="0" isfamily="0" latitude="51.508234" longitude="-0.128188" accuracy="16" context="0" place_id="1EPGyGtTUrrDXJmGCA" woeid="20094364" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1" url_sq="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_s.jpg" height_sq="75" width_sq="75" url_t="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_t.jpg" height_t="64" width_t="100" url_s="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_m.jpg" height_s="155" width_s="240" url_q="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_q.jpg" height_q="150" width_q="150" url_m="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf.jpg" height_m="322" width_m="500" url_n="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_n.jpg" height_n="206" width_n="320" url_z="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_z.jpg" height_z="412" width_z="640" url_c="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_c.jpg" height_c="515" width_c="800" url_l="http://farm9.staticflickr.com/8261/8626786831_c30d6881bf_b.jpg" height_l="644" width_l="1000" /> 
...cut for brevity 
    </photos> 
</rsp> 

의 작업 POCO 클래스이지만 그리워 정보 :

public class Reply 
    { 
    public string stat {get;set;} 
    public List<Photo> photos {get;set;} 
    } 

    public class Photo 
    { 
    public string id {get;set;} 
    public string owner {get;set;} 
    public string secret {get;set;} 
    public string server {get;set;} 
    public string farm {get;set;} 
    public string title {get;set;} 
    public string ispublic {get;set;} 
    public string isfriend {get;set;} 
    public string isfamily {get;set;} 
    public string latitude {get;set;} 
    public string longitude {get;set;} 
    public string accuracy {get;set;} 
    public string context {get;set;} 
    public string place_id {get;set;} 
    public string woeid {get;set;} 
    public string geo_is_family {get;set;} 
    public string geo_is_contact {get;set;} 
    public string geo_is_public {get;set;} 
    public string url_sq {get;set;} 
    public string height_sq {get;set;} 
    public string width_sq {get;set;} 
    public string url_t {get;set;} 
    public string height_t {get;set;} 
    public string width_t {get;set;} 
    public string url_s {get;set;} 
    public string height_s {get;set;} 
    public string width_s {get;set;} 
    public string url_q {get;set;} 
    public string height_q {get;set;} 
    public string width_q {get;set;} 
    public string url_m {get;set;} 
    public string height_m {get;set;} 
    public string width_m {get;set;} 
    public string url_n {get;set;} 
    public string height_n {get;set;} 
    public string width_n {get;set;} 
    public string url_z {get;set;} 
    public string height_z {get;set;} 
    public string width_z {get;set;} 
    public string url_c {get;set;} 
    public string height_c {get;set;} 
    public string width_c {get;set;} 
    public string url_l {get;set;} 
    public string height_l {get;set;} 
    public string width_l {get;set;} 
    public string url_o {get;set;} 
    public string height_o {get;set;} 
    public string width_o {get;set;} 

    } 
나는 또한 사진의 요소의 특성을 검색 할

:

<photos page="1" pages="2" perpage="100" total="117"> 

위의 클래스를 사용하면 이러한 특성을 얻는 논리적 인 방법이 없습니다. 그들을 정의하십시오. 나는 (사진 클래스는 상기와 동일) 다음과 같은 클래스를 시도 :

public class Reply 
    { 
    public string stat {get;set;} 
    public Photos photos {get;set;} 

    } 
    public class Photos 
    { 
    public string page {get;set;} 
    public string pages {get;set;} 
    public string perpage {get;set;} 
    public string total {get;set;} 
    public List<Photo> photoList {get;set;} 
    } 

내가 response.Data.photos.page에 액세스하려고

은 내가 Object reference not set to an instance of an object 오류가 발생합니다.

사진 요소의 속성을 액세스 할 수있을뿐만 아니라 사진 목록을 검색 할 수 있도록 클래스를 디자인하는 방법에 대해 알아 보았습니까?

+0

내가 http://json2csharp.com 좋은 시간을 절약처럼 보인다 시도하지만, 액세스하려고 할 때 나는 여전히 같은 오류를 얻을 : 대신에, 나는 사진의 요소에 액세스 할 수 Xml.Linq을 사용하는 속성 생성 한 클래스를 사용하여 사진 요소의 속성 데이터를 비 직렬화했습니다. –

답변

0

RestSharp는 기본적으로 특성을 deserialize하지 않습니다. github.com/restsharp/RestSharp/wiki/Deserialization 인라인 (즉, 사진)이없는 요소 인 경우 특성을 역 직렬화 할 수 있다는 점이 다릅니다. 속성 및 다른 요소가 포함 된 요소는 사용자 정의 디시리얼라이저가 필요합니다.

System.Xml.Linq.XDocument xDoc = System.Xml.Linq.XDocument.Parse(response.Content); 
IEnumerable<int> page = 
    from item in xDoc.Descendants("photos") 
    select (int) item.Attribute("page"); etc...