如何通过.NET客户端调用Axis Web服务

时间:2009-05-26 07:13:53

标签: .net web-services axis

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

网络服务首先需要验证用户名和用户名。密码,应该在标头中发送,只有在认证之后,我们才能调用它的任何方法。

现在,我不知道如何传递凭证和&调用webservice。

我有Java代码,它显示了如何访问Web服务,但我不知道如何在.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中给我一些示例代码,上面的场景可以是 完成。

2 个答案:

答案 0 :(得分:1)

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

此外,您使用的是什么版本的.NET?你有什么尝试?

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

答案 1 :(得分:1)

在Visual Studio中解析WSDL。转到顶部菜单中的“项目”菜单 - &gt;选择“添加Web引用”或“添加服务引用”,具体取决于您拥有的VS版本。

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

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

顺便说一下,连接到AXYS Web服务并不重要。 Web服务的重点是能够使用标准,以便客户端无关紧要。