1

我有一个任务来调用并连接到 dotnet Web 应用程序中的 Axis Web 服务。

webservice,首先需要验证用户名和密码,应该在header中发送,只有在验证后,我们才能调用它的任何方法。

现在,我不知道如何传递凭据并调用 Web 服务。

我有显示如何访问 web 服务的 Java 代码,但我不知道如何在 .NET 中做同样的事情。

我想我必须使用 WSE 3.0。

这是Java代码:

Service  webService = new Service();
Call  calling    = (Call) webService.createCall();
calling.setProperty (Call.USERNAME_PROPERTY, "victor");
calling.setProperty (Call.PASSWORD_PROPERTY, "victor_s");
String userid="userid";
String password="password";
String endpoint= "SERVICEURL";

Service  service = new Service();
Call     call    = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName(endpoint,methodName));
call.setProperty (Call.USERNAME_PROPERTY, "victor");
call.setProperty (Call.PASSWORD_PROPERTY, "victor_s");


String ItineraryDetailsInputXML="<?xml version=\"1.0\" encoding=\"UTF-8\"?><ItineraryDetailsInput lccp_srcstn=\"NDLS\" lccp_dstnstn=\"MAS\" lccp_trnnum=\"2616\" lccp_cls=\"SL\" lccp_resupto=\"MAS\" lccp_brdpt=\"NDLS\" lccp_day=\"27\" lccp_month=\"11\" lccp_year=\"2008\" lccp_qta=\"GN\" lccp_psgnname1=\"SANJEEV KUMAR \" lccp_psgnsex1=\"m\" lccp_psgnage1=\"60\" lccp_psgnberthpref1=\"Side_Upper\" lccp_psgnfoodpref1=\"Veg\" lccp_psgnconc1=\"SRCTZN\" lccp_psgnname2=\"Prasad\" lccp_psgnsex2=\"f\" lccp_psgnage2=\"60\" lccp_psgnberthpref2=\"Side_Lower\" lccp_psgnfoodpref2=\"\" lccp_psgnconc2=\"SRCTNW\" lccp_psgnname3=\"saa\" lccp_psgnsex3=\"m\" lccp_psgnage3=\"05\" lccp_psgnberthpref3=\"\" lccp_psgnfoodpref3=\"\" lccp_psgnconc3=\"\" lccp_psgnname4=\"ssss\" lccp_psgnsex4=\"m\" lccp_psgnage4=\"45\" lccp_psgnberthpref4=\"\" lccp_psgnfoodpref4=\"\" lccp_psgnconc4=\"\" lccp_psgnname5=\"\" lccp_psgnsex5=\"\" lccp_psgnage5=\"\" lccp_psgnberthpref5=\"\" lccp_psgnfoodpref5=\"\" lccp_psgnconc5=\"\" lccp_psgnname6=\"\" lccp_psgnsex6=\"\" lccp_psgnage6=\"\" lccp_psgnberthpref6=\"\" lccp_psgnfoodpref6=\"\" lccp_psgnconc6=\"\" userid=\""+userid+"\" password=\""+password+"\"/>";
StringBuffer buffer = new StringBuffer ();

String requestXml=ItineraryDetailsInputXML;

我不知道如何使用 .NET 完成所有这些凭据传递。因此,我请求您指导我,我应该如何解决这个问题。另外,如果可以的话,请给我一些 .NET 中的示例代码,可以在其中完成上述场景。

4

2 回答 2

1

在 Visual Studio 中解析 WSDL。转到顶部菜单的“项目”菜单-> 根据您拥有的 VS 版本选择“添加 Web 引用”或“添加服务引用”。

然后,您只需在代码中创建一个新客户端。客户端将具有类似“客户端凭据”的内容,您可以在其中将用户名/密码传递给它:

WebServiceClient client = new WebServiceClient();
client.ClientCredentials.UserName.UserName = "xyz";
client.ClientCredentials.UserName.Password = "123";

顺便说一句,您连接到 AXYS Web 服务并不重要。Web 服务的全部意义在于能够使用标准,这样客户端就无关紧要了。

于 2009-11-08T20:07:02.080 回答
1

如果没有 WSDL,我也不知道,但我认为您没有理由使用 WSE 之类的过时代码。为什么你认为你必须这样做?

另外,您使用的是哪个版本的 .NET?你试过什么?

是您不知道如何从 .NET 调用 Axis 服务,还是您不知道如何从 .NET 调用任何服务?

于 2009-05-26T12:34:29.717 回答