2016-05-12 9 views
0

私は時間報告ベンダーのSOAPサービスに接続し、毎週レポートを取得するプロジェクトに取り組んでいます(RESTでは希望のレポート)。彼らは私たちに参考にされていなかったWSDLを与えている:https://secure.entertimeonline.com/ta/padnos.wsdlhttps://secure.saashr.com/ta/PADNOS.soapSOAP Webサービス(Kronos SaasHR)を消費して応答をSQLサーバーに保存する

私は私のソリューションにサービス参照を追加し、プロキシクラスを生成しますが、私はデータをフェッチしようとするたびに、私はエラーが言っ取得しています「応答。整形式XMLではありません」と「データルートレベルで無効です。ライン1、位置1

これは、Webサービスを消費への私の最初の進出であると私はいずれかを見つけることができません役に立つ資料。

private void btnGo_Click(object sender, EventArgs e) 
{ 
    // service reference 
    // runReportByName 
    TSPHoursWorked.ServiceReference1.runReport_ByNameType rptName = new ServiceReference1.runReport_ByNameType(); 
    rptName.version = 1; 
    rptName.reportCategory = "Calculated Time"; 
    rptName.reportName = "Calculated Time By Entry"; 
    rptName.reportSavedName = "DailyHoursWorked"; 
    rptName.outputType = TSPHoursWorked.ServiceReference1.runReport_ByNameTypeOutputType.XML; 


    TSPHoursWorked.ServiceReference1.SaaSHRClient soap = new ServiceReference1.SaaSHRClient(); 
    soap.ClientCredentials.UserName.UserName = "username"; 
    soap.ClientCredentials.UserName.Password = "password"; 
    var requestInterceptor = new InspectorBehavior(); 
    soap.Endpoint.Behaviors.Add(requestInterceptor); 
    soap.runReport_ByName(rptName); 
    string requestXML = requestInterceptor.LastRequestXML; 
    outputText.Text = requestXML; 
    string responseXML = requestInterceptor.LastResponseXML; 
    outputText.Text += responseXML; 
} 

public class InspectorBehavior : IEndpointBehavior 
{ 
    public string LastRequestXML 
    { 
     get 
     { 
      return myMessageInspector.LastRequestXML; 
     } 
    } 

    public string LastResponseXML 
    { 
     get 
     { 
      return myMessageInspector.LastResponseXML; 
     } 
    } 


    private MyMessageInspector myMessageInspector = new MyMessageInspector(); 
    public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) 
    { 

    } 

    public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) 
    { 

    } 

    public void Validate(ServiceEndpoint endpoint) 
    { 

    } 


    public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) 
    { 
     clientRuntime.MessageInspectors.Add(myMessageInspector); 
    } 
} 

public class MyMessageInspector : IClientMessageInspector 
{ 
    public string LastRequestXML { get; private set; } 
    public string LastResponseXML { get; private set; } 
    public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState) 
    { 
     LastResponseXML = reply.ToString(); 
    } 

    public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel) 
    { 
     LastRequestXML = request.ToString(); 
     return request; 
    } 
} 

私は単にウェブサービスに接続し、レポートとSQLサーバーに一括挿入するだけで助けてください。誰かが正しい道に私を置くことができますか?

EDIT

私はSOAPUIをインストールしたと石鹸操作「アクション」の欄の下にリストされている何のURLが存在しない:no soap actions

答えて

0

問題は持っていないクロノスに私たちの中の男のベンダーとありました技術的な知識。数週間後、最後にクロノスとの接触を取得し、私がいることを知らされた:

  • 新しいユーザーがシングル・サインオン
  • なしを作成する必要がありますが、メイン管理者のグループ/レポートの/ etcにコピー新しいアカウント
  • にアカウントが次にあなたがRESTfulなサービスを呼び出すことができるようになり、新しいアカウント

に最高のセキュリティ権限を追加します。私たちのベンダーが2週間の時間を無駄にしたので、これが誰かを助けることを願っています。

関連する問題