私は時間報告ベンダーのSOAPサービスに接続し、毎週レポートを取得するプロジェクトに取り組んでいます(RESTでは希望のレポート)。彼らは私たちに参考にされていなかったWSDLを与えている:https://secure.entertimeonline.com/ta/padnos.wsdlと https://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が存在しない: