在.net 4.5中使用远程webservice时解决命名空间问题
我正在尝试使用我们的会员数据库服务(iMIS)提供的web服务 下面是一个在他们的网站上使用WSDL的示例。在.net 4.5中使用远程webservice时解决命名空间问题,.net,xml,web-services,namespaces,.net,Xml,Web Services,Namespaces,我正在尝试使用我们的会员数据库服务(iMIS)提供的web服务 下面是一个在他们的网站上使用WSDL的示例。 HttpClient=newhttpclient(); client.BaseAddress=新Uri(“http://www.atsol.org/webservices_demo/wscontacts.asmx/"); var c=新FormUrlEncodedContent(新[] { 新的KeyValuePair(“用户名”、“myname”), 新的KeyValuePair(“密
HttpClient=newhttpclient();
client.BaseAddress=新Uri(“http://www.atsol.org/webservices_demo/wscontacts.asmx/");
var c=新FormUrlEncodedContent(新[]
{
新的KeyValuePair(“用户名”、“myname”),
新的KeyValuePair(“密码”、“我的密码”),
新的KeyValuePair(“UpdateLogedinDate”、“false”)
});
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/xml”);
LoginResultsWithData r=response.Result.Content.ReadAsAsync().Result;
但是,当它到达最后一行并尝试将XML反序列化为“LoginResultsWithData”对象时,会在名称空间中遇到错误
第1行位置163处出错。应为命名空间“”中的元素“LoginResultsWithData”。。遇到名称为“LoginResultsWithData”、命名空间为“”的“元素”
这是来自webservice的响应
HTTP/1.1200正常
日期:2013年7月17日星期三19:48:59 GMT
服务器:Microsoft IIS/6.0
X-Powered-By:ASP.NET
X-AspNet-Version:4.0.30319
缓存控制:专用,最大年龄=0
内容类型:text/xml;字符集=utf-8
内容长度:1202
#
成功
####
####
假的
假的
s
A.
2099-12-31T00:00:00
我的名字
我的
名称
我的
ASP.NET_会话ID
io0um25qmae35wiogsjgwrsq
登录
34E1A645EB3F4AE693EDEE665D2328264C7F064B366DE16286DF83E6D79AF7663294E1275DA22703506F3E8E3F89D02C27DAB30F2D6A4A43A3AF1A6D0DCD1A2AFDFD18073E6187111430228892A9C7EC
在你问之前,不,我不能搞乱网络服务。
救命啊 可能服务提供商已经更新了他们的wsdl,客户端机器需要重新生成,因为发布的响应似乎与wsdl中指定的类型一致 根据错误消息,web服务客户端机器中的某个位置已将不正确的命名空间“”与响应元素“LoginResultsWithData”关联 WSDL和发布的响应指示与命名空间“”关联的LoginResultsWithData(在WSDL:types部分中,这由targetNamespace=所涵盖)http://www.atsol.org/wsContacts/schema元素的属性;在响应中,这用属性xmlns=表示http://www.atsol.org/wsContacts/"LoginResultsWithData元素的)
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://www.atsol.org/webservices_demo/wscontacts.asmx/");
var c = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("Username", "myname"),
new KeyValuePair<string, string>("Password", "mypassword"),
new KeyValuePair<string, string>("UpdateLoggedInDate", "false")
});
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
LoginResultsWithData r = response.Result.Content.ReadAsAsync<LoginResultsWithData>().Result;
HTTP/1.1 200 OK
Date: Wed, 17 Jul 2013 19:48:59 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 1202
<?xml version="1.0" encoding="utf-8"?>
<LoginResultsWithData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.atsol.org/wsContacts/">
<ResultCode>#</ResultCode>
<ResultMessage>Succeeded</ResultMessage>
<ID>####</ID>
<InstituteContactId>####</InstituteContactId>
<IsMember>false</IsMember>
<IsInstitute>false</IsInstitute>
<CustomerTypeCode>S</CustomerTypeCode>
<BillingCategory />
<ContactStatusCode>A</ContactStatusCode>
<PaidThruDate>2099-12-31T00:00:00</PaidThruDate>
<FullName>My Name</FullName>
<FirstName>My</FirstName>
<LastName>Name</LastName>
<Informal>My</Informal>
<Roles />
<IMISCookies>
<IMISCookie>
<CookieName>ASP.NET_SessionId</CookieName>
<CookieValue>io0um25qmae35wiogsjgwrsq</CookieValue>
</IMISCookie>
<IMISCookie>
<CookieName>Login</CookieName>
<CookieValue>34E1A645EB3F4AE693EDEE665D2328264C7F064B366DE16286DF83E6D79AF7663294E1275DA22703506F3E8E3F89D02C27DAB30F2D6A4A43A3AF1A6D0DCD1A2AFDFD18073E6187111430228892A9C7EC</CookieValue>
</IMISCookie>
</IMISCookies>
</LoginResultsWithData>