0

私は、一見同一のXMLのHTTPartyのXML解析に完全に混乱しています。Webサービスに対して同じGET呼び出し(関数パラメーターの取得)を行っていますが、異なるリソース(/channels/3/functions/58/と/channels/6/functions/106/)に対して行っています。HTTPartyを使用して電話をかけています。問題は、結果の解釈が異なり、返されるXMLに違いを説明する違いが見つからないことです。

これが/channels/ 3 / features /58/への最初の呼び出しで起こっていることです

XML応答:

<functionsResult xmlns="http://www.w3.org/2005/Atom">
<function>
    <id>58</id>
    <name>API: movies</name>
    <type>trigger</type>
    <description></description>
    <tags></tags>
    <status>active</status>
    <parameters>
        <parameter name="movie_query" label="Movie Query" type="xsd:string" required="false" default=""/>
        <parameter name="critics-pick" label="Critics Pick" type="xsd:string" required="false" default=""/>
        <parameter name="thousand-best" label="Thousand Best" type="xsd:string" required="false" default=""/>
        <parameter name="dvds" label="Dvds" type="xsd:string" required="false" default=""/>
        <parameter name="reviewer" label="Reviewer" type="xsd:string" required="false" default=""/>
        <parameter name="publication-date" label="Publication Date" type="xsd:date" required="false" default=""/>
        <parameter name="opening-date" label="Opening Date" type="xsd:date"      required="false" default=""/>
    </parameters>
    <link rel="self" title="This Function" method="GET" type="application/xml" href="/channels/3/functions/58/"/>
    <link rel="related" title="Function Channel" method="GET" type="application/xml" href="/channels/3/"/>
</function>
</functionsResult>

HTTPartyから返されるハッシュは問題なく、次のようになります(デバッグ出力)。

functionsResult:
  function:
    id: '58'
    name: ! 'API: movies'
    type: trigger
    description: !!null 
    tags: !!null 
    status: active
    parameters:
      parameter:
      - name: movie_query
        label: Movie Query
        type: xsd:string
        required: 'false'
        default: ''
      - name: critics-pick
        label: Critics Pick
        type: xsd:string
        required: 'false'
        default: ''
      - name: thousand-best
        label: Thousand Best
        type: xsd:string
        required: 'false'
        default: ''
      - name: dvds
        label: Dvds
        type: xsd:string
        required: 'false'
        default: ''
      - name: reviewer
        label: Reviewer
        type: xsd:string
        required: 'false'
        default: ''
      - name: publication-date
        label: Publication Date
        type: xsd:date
        required: 'false'
        default: ''
      - name: opening-date
        label: Opening Date
        type: xsd:date
        required: 'false'
        default: ''
    link:
    - rel: self
      title: This Function
      method: GET
      type: application/xml
      href: /channels/3/functions/58/
    - rel: related
      title: Function Channel
      method: GET
      type: application/xml
      href: /channels/3/

他のリソースのXMLは、その構造がほぼ同じです。

<functionsResult xmlns="http://www.w3.org/2005/Atom">
<function>
    <id>106</id>
    <name>search</name>
    <type>trigger</type>
    <description/>
    <tags/>
    <status>active</status>
    <parameters>
        <parameter name="callback" label="Callback" type="string" required="false" default=""/>
        <parameter name="geocode" label="Geocode" type="string" required="false" default=""/>
        <parameter name="lang" label="Lang" type="string" required="false" default=""/>
        <parameter name="locale" label="Locale" type="string" required="false" default=""/>
        <parameter name="page" label="Page" type="string" required="false" default=""/>
        <parameter name="result_type" label="Result Type" type="string" required="false" default=""/>
        <parameter name="rpp" label="Rpp" type="string" required="false" default=""/>
        <parameter name="show_user" label="Show User" type="string" required="false" default=""/>
        <parameter name="until" label="Until" type="string" required="false" default=""/>
        <parameter name="since_id" label="Since Id" type="string" required="false" default=""/>
        <parameter name="include_entities" label="Include Entities" type="string" required="false" default=""/>
    </parameters>
    <link rel="self" title="This Function" method="GET" type="application/xml" href="/channels/6/functions/106/"/>
    <link rel="related" title="Function Channel" method="GET" type="application/xml" href="/channels/6/"/>
</function>
</functionsResult>

ただし、返されるハッシュは「パラメータ」(デバッグ出力)の空の配列を返します!

functionsResult:
  function:
    id: '106'
    name: ! 'search'
    type: trigger
    description: !!null 
    tags: !!null 
    status: active
    parameters:
      parameter:
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
      - ''
    link:
    - rel: self
      title: This Function
      method: GET
      type: application/xml
      href: /channels/6/functions/106/
    - rel: related
      title: Function Channel
      method: GET
      type: application/xml
      href: /channels/6/

私が考えることができる唯一のことは、2番目のGET呼び出しのパラメーターがいくつかの属性にアンダースコアを持っているということです??? それはありそうもない説明のようです。どんな助けでも大歓迎です。

4

1 に答える 1

0

xml名前空間に問題があるのではないかと思います。最初の応答には有効なtype属性があるようですが、後者にはxsd:string名前空間がありません。

于 2012-03-18T19:19:11.127 に答える