私は otrs-ticketsystem と対話して、いくつかの写真を作成し、いくつかの統計を計算しようとしています。これは私がしたいhaskell
- 私はパッケージを使用しますsoap
。
import ステートメントを無視して、コードはかなり単純です。構成ファイルを使用して SOAP-Transport を作成しますsoap.cfg
(以下を参照)。次に、SOAP-Body を作成し、 を使用して Web サービスを呼び出します"Dispatch"
。
{-# LANGUAGE OverloadedStrings #-}
import Network (withSocketsDo)
import Network.SOAP
import Network.SOAP.Transport.HTTP
import Text.XML.Writer
import Text.XML.Stream.Parse as Parse
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.ByteString.Lazy.Char8 as BS
import Data.Configurator (load, Worth(Required))
main :: IO ()
main = withSocketsDo $ do
transport <- confTransport "soap" =<< load [Required "./src/SOAP/soap.cfg"]
let body = do element "TicketObject" ("TicketSearch" :: Text)
element "OwnerID" ("owner" :: Text)
xmlresult <- invokeWS transport "#TicketObject" () body (RawParser id)
BS.putStrLn xmlresult
石鹸.cfg
soap {
url = "http://domain/otrs/rpc.pl"
user = "testuser"
password = "testpass"
trace = true
timeout = 15
}
このプログラムをビルドして呼び出すと、次のようになりますxmlresult
。
リクエスト:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<TicketObject>TicketSearch</TicketObject>
<OwnerID>heu</OwnerID>
</soapenv:Body>
</soapenv:Envelope>
応答:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>
SOAPAction shall match 'uri#method' if present (got 'Dispatch', expected '#TicketObject'
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
次に、次の行を変更すると
xmlresult <- invokeWS transport "Dispatch" () body (RawParser id)
に
xmlresult <- invokeWS transport "#TicketObject" () body (RawParser id)
障害文字列は次のようになります
<faultstring>
Denied access to method (TicketObject) in class (main) at /opt/otrs/Kernel/cpan-lib/SOAP/Lite.pm line 2810.
</faultstring>
インターネットで解決策を検索しましたが、これしか見つかりませんでした
- http://otrs.perl-services.de/…</a> チケットサーチ、そしてもちろんOTRS 3.3 APIについて
- http://blog.otrs.org -> チケット検索 (perl)
- JavaのOTRSクライアント
- JSONを提供するOTRS iPhoneObject
最後のもので結果を得ることができました-しかし、iPhoneObjectとTicketGetのみ-残念ながらTicketSearchはサポートされていないようです。
リクエストの有効な XML がどのように見える必要があるか教えてもらえますか?
Web サービスを使用する SOAP リクエスト .Net を使用して otrs チケットを作成する方法も見つけましたが、残念ながらそのようなサービスを作成する方法がわかりません。