发送Soap请求并捕获响应

时间:2016-04-06 08:08:22

标签: c# wpf web-services soap

我正在尝试构建WPF程序,根据作为服务引用添加的WSDL将Soap请求创建为xml文件。
问题是我无法配置代理类来使用该xml文件并将其作为请求发送以及接收响应。它给了我一个例外:

  

类型&System; Service.ServiceModel.FaultException`1'的未处理异常发生在mscorlib.dll中   附加信息:APPLICATION ERROR

public string returnSerializedxml(object input)
{
    XmlSerializer xmlSerializer = new XmlSerializer(input.GetType());

    using (StringWriter textWriter = new StringWriter())
    {
        xmlSerializer.Serialize(textWriter, input);
        return textWriter.ToString();
    }
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    ConsignmentEndpointClient proxy = new ConsignmentEndpointClient();
    save sv = new save();
    saveResponse response = new saveResponse();
    XmlDocument doc = new XmlDocument();
    doc.Load(PATH);
    response= proxy.save(sv);  /*Here occur the exception*/

    try
    {
        Output.Text = "Response : \n" + returnSerializedxml(response);     
    }
    catch (Exception error)
    {
        Output.Text = "Error in Request : \n" + error;
    }

1 个答案:

答案 0 :(得分:0)

编辑代码以忽略不与webservice调用交互的对象给出:

ConsignmentEndpointClient proxy = new ConsignmentEndpointClient();
save sv = new save();
response= proxy.save(sv);  /*Here occur the exception*/

在不知道网络服务期望的情况下,它看起来就像你正在尝试保存一个全新的对象,这个对象没有以任何方式改变(可能是,也可能不是,有效的事情)。你没有处理它抛出的异常,这就是为什么它没有处理 - 你可以简单地将它移动到try块范围内的调用中,所以更像是:

private void button1_Click(object sender, RoutedEventArgs e)
{
    try
    {
        ConsignmentEndpointClient proxy = new ConsignmentEndpointClient();
        save sv = new save();

        throw new NotImplementedExcetpion("This probably needs to be associated with your sv object in some way, or just removed altogether");

        XmlDocument doc = new XmlDocument();
        doc.Load(PATH);
        saveResponse response = proxy.save(sv);  /*Here occur the exception*/

        Output.Text = "Response : \n" + returnSerializedxml(response);     
    }
    catch (Exception error)
    {
        Output.Text = "Error in Request : \n" + error;
    }
}