我必须创建一个应用程序,将一些数据发送到 (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/