1

URL ベースの API を持つ Web サービスと通信したいと考えています。たとえば、次の URL があります。

http://api.bla.com/aaa/bbb.ashx?Action=GetSecurityToken&vendorId=3

URL をブラウザーに入力すると、すべての詳細を含む XML ページを取得できます。

grails アプリケーションから XML ページを取得したいので、次のコードを使用します。

http = new HTTPBuilder('http://api.bla.com/aaa/bbb.ashx')
html = http.get( path : '/', query : [Action :"GetSecurityToken", vendorId: "3"] ) )
println html

なぜこれが機能しないのですか。私は悪い要求を受け取ります。grails コントローラーで上記の URL から xml ページを取得するにはどうすればよいですか?

4

1 に答える 1

1

ベース URL をhttp://api.bla.com/aaa/として定義したため、最終的な URL はhttp://api.bla.com/aaa/bbb.ashx/?Action=GetSecurityToken&vendorId=3になると思いますbbb.ashxを開き、呼び出しのパスを に設定します/

次のようにベース URL を変更してみてください (この例から抜粋):

def http = new HTTPBuilder('http://api.bla.com/aaa')
http.get( path : '/bbb.ashx',
          contentType : XML,
          query : [Action :"GetSecurityToken", vendorId: "3"] ) { resp, reader ->

  println "response status: ${resp.statusLine}"
  println 'Headers: -----------'
  resp.headers.each { h ->
    println " ${h.name} : ${h.value}"
  }
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}
于 2012-11-23T15:11:48.947 に答える