2016-06-14 11 views
2

難しい時があります。 Mark Logicを使用して外部Webサービスにアクセスするにはどうすればよいですか? (多分私の検索用語が間違っていますか?私もxdmp:http-getxdmp:http-post、http後のリクエスト、mash-upをオーケートしました)。marklogicを使用して外部Webサービスを消費しています

MarkLogicにスクリプトを書き込んで、1つの外部(非ML)ウェブサービスにアクセスし、3つの結果を組み合わせる前にレスポンスを表示するのが難しい(うまくいけば簡単です) MLを使って1つのページに異なるWebサービス(このマッシュアップの正しい言葉ですか?)

MLを使用した例が最も評価されます。私は見た摂氏華氏変換例、また株価の要求と応答がMLで見ていない。私はどのように、どこから始めるべきかわかりません。あなたは正しい方向に私を向けることができますか? MLを使ってWebサービスを学ぶことを熱望します。

多くのありがとう。

答えて

3

私は例がここにあると言うだろう:http://docs.marklogic.com/xdmp:http-post

しかし、完全を期すために、私は同様にこれらを追加してみましょう。 http://www.w3schools.com/xml/tempconvert.asmx?op=FahrenheitToCelsius

SOAP:に基づいて

1.1:

let $envelop := 
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <FahrenheitToCelsius xmlns="http://www.w3schools.com/xml/"> 
     <Fahrenheit>100</Fahrenheit> 
     </FahrenheitToCelsius> 
    </soap:Body> 
    </soap:Envelope> 
return 
    xdmp:http-post(
    "http://www.w3schools.com/xml/tempconvert.asmx", 
    <options xmlns="xdmp:http"> 
     <headers> 
     <Content-Type>text/xml; charset=utf-8</Content-Type> 
     <SOAPAction>"http://www.w3schools.com/xml/FahrenheitToCelsius"</SOAPAction> 
     </headers> 
    </options>, 
    $envelop 
) 

SOAP 1.2:

let $envelop := 
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
     <FahrenheitToCelsius xmlns="http://www.w3schools.com/xml/"> 
     <Fahrenheit>100</Fahrenheit> 
     </FahrenheitToCelsius> 
    </soap12:Body> 
    </soap12:Envelope> 
return 
    xdmp:http-post(
    "http://www.w3schools.com/xml/tempconvert.asmx", 
    <options xmlns="xdmp:http"> 
     <format xmlns="xdmp:document-get">xml</format> 
     <headers> 
     <Content-Type>application/soap+xml; charset=utf-8</Content-Type> 
     </headers> 
    </options>, 
    $envelop 
) 

HTTP POST:

let $body := text { 
    string-join(
    ("Fahrenheit=" || encode-for-uri(string(100))), 
    "&amp;" 
) 
} 
return 
    xdmp:http-post(
    "http://www.w3schools.com/xml/tempconvert.asmx/FahrenheitToCelsius", 
    <options xmlns="xdmp:http"> 
     <headers> 
     <Content-Type>application/x-www-form-urlencoded</Content-Type> 
     </headers> 
    </options>, 
    $body 
) 

HTH!

+0

ありがとうございます。あなたの返信例は、ml xdmp:http-postでもっと読んで、わかりやすくなりました。 – apaw

+0

私はこれについてはっきりしていません:私は1ページで3つのWebサービスを消費する場合、私は3 let $ envelopを書く必要があります:= ....返信xdmp:http-post(...)FLOWR blocks asあなたの例では? ML/xquery初心者へのあなたの患者の返信にもう一度感謝します。 – apaw

+0

私はもっと簡単にするために関数を呼び出すことをお勧めします。let $ res1:= my:func1(..)let $ res2:= my:funky(..)return {$ res1 、$ res2} '一緒に結果を接着する – grtjn

関連する問題