未知的WebService描述并从C#中使用它

时间:2014-11-27 16:01:44

标签: c# asp.net web-services

我是一个菜鸟,并且几个月来一直在“认真地”(作为我的工作)发展,所以我提前为我的无知而道歉。

我需要在我想开发的aspx页面上从C#客户端使用这个Web服务,但首先我需要了解webservice,我不确定它是用哪种语言编写的,但我认为它是PERL ,因为Web服务的URL就像这样“http://wschsol.mideplan.cl/mod_perl/xml/fps-by-rut”。这个web服务是由其他人开发的,我现在无法联系,并且在我无法访问的linux服务器上运行。

网络服务的工作非常简单,它接收一个人的国家身份证号码,并以xml格式返回一些关于他的信息,我希望在我的客户端aspx页面上显示一些网格和内容。

我已经在互联网上阅读了在常见的“.asmx”扩展名之后使用WSDL变量可以看到web服务及其方法的描述,但是在这种情况下没有扩展名,所以,我不能使用?WSDL。我猜可能“fps_by_rut”只是一个webmethod,而不是webservice本身。所以问题是:我如何使用网络服务? 由于我知道期望什么样的请求(一个人的ID),我试图通过浏览器手动向URL添加ID(如下所示:“http://wschsol.mideplan.cl/mod_perl/xml/fps-by-rut?rut=6985462-1”)如果我这样做,它会以xml格式正常响应

我尝试在我的项目中为它添加一个Web服务引用,但是,我粘贴了整个URL,当我点击“go”时,它说它需要凭据。我有这些凭据,用户和密码,但他们没有工作...让我感到困惑的是,在我之前的那个人的经典asp上编程的这个web服务还有另一个客户端,我可以访问该代码,当我看到他称之为网络服务的行时,就像这样:

xml.Open "GET", "http://wschsol.mideplan.cl/mod_perl/xml/fps-by-rut?rut="&rsVac(0), False,"user","password"

我已经审查了“用户”和“密码”字符串,因为这些是实际的凭据。这个经典的asp客户端可以正常使用这些凭据。我在创建引用时尝试使用它们,但它们不起作用。更重要的是,当我通过浏览器手动添加ID时,它询问了我的凭据,他们也工作了......

我走错了路吗?伙计们,我需要指导。如果有一个我可以阅读的课程,这有助于我理解所有这些webservices的东西,我将非常感激。或者,如果有人能告诉我走哪条路,我很确定我的方向错了......

提前感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

WSDL用于SOAP,我们都不知道它是否是SOAP服务。
您应该使用HttpClient并对API进行Get-Calls 你可以使用这样的东西:

var client = new HttpClient();
client.BaseAddress = new Uri("http://wschsol.mideplan.cl");
var httpResponse = await client.GetStringAsync("mod_perl/xml/fps-by-rut?rut=<InsertParamHere>");

编辑授权:
你必须添加这个:

var byteArray = Encoding.ASCII.GetBytes("username:password1234");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

摘录源:Simple C# .NET 4.5 HTTPClient Request Using Basic Auth and Proxy