.Net中Sabre SOAP API EPS_EXT_ProfileReadRQ的问题
我从sabre构建了一个简单的项目来测试EPS_EXT_ProfileReadRQ soap api,我可以使用soapUI工具很好地使用它。通过API检索概要文件的非常简单和基本的场景。使用VS2013上的“添加服务引用”构建我的代理类,然后创建一个简单接口来实现调用。我的界面如下所示:.Net中Sabre SOAP API EPS_EXT_ProfileReadRQ的问题,.net,sabre,.net,Sabre,我从sabre构建了一个简单的项目来测试EPS_EXT_ProfileReadRQ soap api,我可以使用soapUI工具很好地使用它。通过API检索概要文件的非常简单和基本的场景。使用VS2013上的“添加服务引用”构建我的代理类,然后创建一个简单接口来实现调用。我的界面如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using getSabreProfile.EPS_ProfileReadService;
namespace getSabreProfile.Service
{
public interface IGetProfileService
{
Sabre_OTA_ProfileReadRS getProfile(string Token, string Domain, string ProfileId);
}
public class GetProfileService : IGetProfileService
{
private EPS_ProfileReadPortTypeClient service = new EPS_ProfileReadPortTypeClient();
public GetProfileService()
{
}
public Sabre_OTA_ProfileReadRS getProfile(string Token, string Domain, string ProfileId)
{
var _security = new Security
{
BinarySecurityToken = Token
};
var _messageHeader = new MessageHeader
{
From = new From
{
PartyId = new PartyId[1] { new PartyId { Value ="Client" } }
},
To = new To
{
PartyId = new PartyId[1] { new PartyId { Value = "Sabre" } }
},
CPAId = "CL41",
ConversationId = "Profiles",
Action = "EPS_EXT_ProfileReadRQ",
MessageData = new MessageData
{
RefToMessageId = "Profiles Get Profile",
Timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
}
};
var _sabre_OTA_ProfileReadRQ = new Sabre_OTA_ProfileReadRQ
{
Version = "6.19",
Item = new ProfileType
{
TPA_Identity = new ProfileTypeTPA_Identity
{
UniqueID = ProfileId,
DomainID = Domain,
ClientCode = "TN",
ProfileTypeCode = ProfileTypeInfo.TVL,
ClientContextCode = "MYS"
}
}
};
var response = service.EPS_ProfileReadRQ(ref _messageHeader, ref _security, _sabre_OTA_ProfileReadRQ);
return response;
}
}
}
然后我只是从我的程序中实例化接口:
private void btnGetProfile_Click(object sender, EventArgs e)
{
GetProfileService _getProfile = new GetProfileService();
var res = _getProfile.getProfile(tbToken.Text, tbDomain.Text, tbProfileId.Text);
}
应用程序编译时没有错误,但在运行时我收到一个错误:
There was an error in serializing one of the headers in message EPS_ProfileReadRQRequest: 'Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'getSabreProfile.EPS_ProfileReadService.IgnoreReadSubjectAreasType' to 'getSabreProfile.EPS_ProfileReadService.PartialReadSubjectAreasType'
error CS0029: Cannot implicitly convert type 'getSabreProfile.EPS_ProfileReadService.PartialReadSubjectAreasType' to 'getSabreProfile.EPS_ProfileReadService.IgnoreReadSubjectAreasType'
在我看来,VS2013没有正确地为web服务生成代理类,类型的映射也没有正确地解析,但我一直在寻找解决方案。我愿意手动调整代理类代码,但不知道在哪里进行更改,也不知道该做什么!。。我希望这里有人能帮忙
谢谢 wsdl.exe/o:sabreenhancedarbook3.3.0RQ.vb/l:vb我像这样手动生成代理计算。我尝试了,但没有成功:-(…您是否能够使用特定的web服务EPS_EXT_ProfileReadRQ?我实现了许多其他SOAP消息,只有这一条我有问题…VS2013在您添加为服务引用时已经使用wsdl.exe,@Carlos-只是好奇您是否取得了任何进展。我过去在VS2012中使用较旧的配置文件方法b取得了成功但是这些较新的Sabre Profiles方法给了我一些麻烦。但是,我现在使用VS2017并在VS之外运行wsdl.exe来生成代理类。我必须对代理类进行调整,但这与您的错误无关。Thx。