c# - 无法使用 C# 或 VB 检索 Web 服务响应

标签 c# vb.net visual-studio-2010 web-services soap

我必须创建一个应用程序,将一些数据发送到 (SOAP)WebService 并显示其响应。这看起来很简单,但问题是在消费 WS 之后,变量仍然为空。我尝试了 C# 和 VB,但没有成功。

这是代码:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            CardifWS.RequestContactWsService webService = new CardifWS.RequestContactWsService();

            string usuario = "user987";
            string name = "teste2003 1552";
            string cpf = "123456789";
            string email = "email@gmail.com";
            string zipCode = "04536010";
            string city = "sao paulo";
            string neighborhood = "itaim";
            string state = "sp";
            string address = "itaim";
            string addressNumber = "98";
            string addressComp = "2";
            int dddPhone = 11;
            string phone = "12345678";
            int dddCellPhone = 11;
            string cellPhone = "1187654321";
            int fipeCode = 123456;
            string chassi = "123456789";  
            string renavam = "987654321";
            string placa = "abc3456";
            string marca = "ford";
            string modelo = "ka";
            int colorCode = 456;
            int anoFabricacao = 2010;
            int anoModelo = 2011;
            int indice = 1;
            string[] parametros = "7".Split(' ');
            string bestTimeCall = "T";

            CardifWS.RequestContactResponse respuesta = webService.requestContact(usuario, name, cpf, email, zipCode, city,
                                                                                neighborhood, state, address, addressNumber,
                                                                                addressComp, dddPhone, phone, dddCellPhone,
                                                                                cellPhone, fipeCode, chassi, renavam, placa,
                                                                                marca, modelo, colorCode, anoFabricacao,
                                                                                anoModelo, indice, parametros, bestTimeCall);

            Console.WriteLine("Response: {0}", respuesta.ToString());
            Console.WriteLine("errorCode: {0}", respuesta.errorCode.ToString());
            Console.WriteLine("errorDesc: {0}", respuesta.errorDesc);
            Console.WriteLine("id: {0}", respuesta.id.ToString());
            Console.ReadLine();
        }
    }
}

这是 WS URL

http://directsales2.uat.cardif.com.br:8080/autofacil-ws/services/RequestContactWs?wsdl

使用 WireShark 我确定 WS 正在向我发送响应,但出于某种原因 .NET 似乎无法读取它。

我使用的是 Visual Studio 2010

最佳答案

我检查了服务,显然响应的命名空间与服务命名空间不同。

  • 响应:命名空间="http://response.autofacil.cardif.com.br
  • 服务:命名空间="http://webservice.autofacil.cardif.com.br

我使用 svcutil.exe 为 web 服务生成代理类

SvcUtil.exe /o:c:\temp\foo.cs http://directsales2.uat.cardif.com.br:8080/autofacil-ws/services/RequestContactWs?wsdl

将类导入到您的项目中,并将服务添加到app.config

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="RequestContactWsSoapBinding" />
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint address="http://directsales2.uat.cardif.com.br:8080/autofacil-ws/services/RequestContactWs"
        binding="basicHttpBinding" bindingConfiguration="RequestContactWsSoapBinding"
        contract="Cardif.Autofacil.WebService.RequestContactWs" name="RequestContactWs" />
  </client>
</system.serviceModel>

之后您可以更改导入类中 RequestContactResponse 的命名空间

[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace ="http://webservice.autofacil.cardif.com.br")]
public partial class RequestContactResponse

关于c# - 无法使用 C# 或 VB 检索 Web 服务响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16113329/

相关文章:

c# - 如何指定接口(interface)的实现者抛出的异常?

vb.net - 当 COM 属性不正确/丢失时,编译器不会出错?

visual-studio-2010 - 错误 LNK1104 : cannot open file 'libboost_system-vc100-mt-gd-1_55. 库

visual-studio-2010 - 应用程序无法正常启动 0xc150002

特定字典项的 C# MemberExpression

c# - 获取最大元素的索引

.net - 类实例在单个线程中被调用和销毁时是否是线程安全的?

css - 缩略图上的文字

visual-studio-2010 - vcxproj 文件不会加载到解决方案中

c# - Web 服务中的返回类对象更改了其命名空间