C# 如何使用自动生成的代理类?
我想使用数据库中的web服务来收集信息。现在,我实现了web服务,通过wsdl.exe将其转换为代理类,但我对结果有点恼火。调用该类的常规方法是new object->method->parameters->happiness。这个东西只包含部分类,需要奇怪的参数。我甚至不确定我是否有获得想要的信息的正确方法 这似乎是必要的方法:C# 如何使用自动生成的代理类?,c#,soap,wsdl,asmx,proxy-classes,C#,Soap,Wsdl,Asmx,Proxy Classes,我想使用数据库中的web服务来收集信息。现在,我实现了web服务,通过wsdl.exe将其转换为代理类,但我对结果有点恼火。调用该类的常规方法是new object->method->parameters->happiness。这个东西只包含部分类,需要奇怪的参数。我甚至不确定我是否有获得想要的信息的正确方法 这似乎是必要的方法: public UniProtId2DomainIdsRecordType[] UniProtId2DomainIds (UniProtId2DomainIdsRe
public UniProtId2DomainIdsRecordType[] UniProtId2DomainIds (UniProtId2DomainIdsRequestRecordType UniProtId2DomainIdsRequestRecord)
{
object[] results = this.Invoke("UniProtId2DomainIds", new object[] {
UniProtId2DomainIdsRequestRecord});
return ((UniProtId2DomainIdsRecordType[])(results[0]));
}
这似乎是所需的课程之一:
public partial class UniProtId2DomainIdsRequestRecordType
{
我所需要的就是获得一个像P0A7N9这样的字符串,并将其传递给服务器
(对此Web服务的引用:)
有人能告诉我如何处理这个问题吗?最简单的方法是将此web服务添加到您的项目中。然后您可以调用不同的方法。使用此地址: 如果要使用生成的类,请执行以下操作:
using (var service = new DataServices())
{
var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
{
uniprot_acc = "P0A7N9"
});
if (results != null && results.Length >0)
{
var geneName = results[0].gene_name;
var speciesName = results[0].species_name;
}
}
正如John在评论中所建议的,ASMX和wsdl.exe是不推荐使用的技术。您应该使用服务引用,最简单的方法是将此web服务添加到您的项目中。然后您可以调用不同的方法。使用此地址: 如果要使用生成的类,请执行以下操作:
using (var service = new DataServices())
{
var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
{
uniprot_acc = "P0A7N9"
});
if (results != null && results.Length >0)
{
var geneName = results[0].gene_name;
var speciesName = results[0].species_name;
}
}
正如John在评论中所建议的,ASMX和wsdl.exe是不推荐使用的技术。您应该使用服务引用和,这可能会起作用,但我如何得到答案?它是一个由六个字符串组成的数组。我真的很想知道,如果我想使用uniprot to cath以外的其他方法,如何使用生成的类。我更新用一些想法解释了答案。生成的Web引用包含服务公开的所有方法,您将能够使用它们。Web引用生成与wsdl.exe相同的类,这更好,因为您让VS来处理它,而不是命令行。-1用于建议Web引用而不是服务引用。服务引用更有意义。出于某种原因,我认为这是ASMX服务。即将进行更新。实现了下面的代码,效果非常好。感谢您的努力。:)这可能会奏效,但我如何得到答案?它是一个由六个字符串组成的数组。我真的很想知道如何使用生成的类,以防我想使用其他m我用一些想法更新了答案。生成的Web引用包含服务公开的所有方法,您将能够使用它们。Web引用生成与wsdl.exe相同的类,这只是更好,因为您让VS来处理它,而不是命令行。-1用于建议Web引用而不是s服务参考。服务参考更有意义。出于某种原因,我认为这是ASMX服务。更新即将到来。实现了下面的代码,它工作得非常完美。感谢您的努力。:)ASMX是一项遗留技术,不应用于新的开发。WCF或ASP.NET Web API应用于所有新的Web服务开发ce客户端和服务器。一个提示:微软已经退出了MSDN上的。很高兴你提到这一点,但这并没有改变我需要使用的数据库有其格式的事实。顺便说一句,我从来没有提到使用ASMX,也没有将其添加到标记中。我没有在asp.net中编码,它是纯C#和服务地址是SOAP over HTTP。WSDL.EXE是ASMX technology.ASMX是一项传统技术,不应用于新的开发。WCF或ASP.NET Web API应用于所有Web服务客户端和服务器的新开发。提示:Microsoft已退出MSDN上的。很高兴您提到,但这并没有改变我需要使用的数据库具有其格式的事实。顺便说一句,我从来没有这样做过提到使用ASMX,我也没有将其添加到标记中。我没有在asp.net中编写代码,它是纯C#的,服务地址是SOAP over HTTP。WSDL.EXE是ASMX技术的一部分。
using (var ser = new DataServicesPortTypeClient())
{
var results = ser.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
{
uniprot_acc = "P0A7N9"
});
if (results != null)
{
var geneName = results.gene_name;
var speciesName = results.species_name;
}
}
using (var service = new DataServices())
{
var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
{
uniprot_acc = "P0A7N9"
});
if (results != null && results.Length >0)
{
var geneName = results[0].gene_name;
var speciesName = results[0].species_name;
}
}