我有一个webservice方法,描述如下:
POST /servis.asmx HTTP/1.1
Host: webservice.myproject.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/MyMethod"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://tempuri.org/">
<Username>string</Username>
<Password>string</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<MyMethod xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
我正在尝试开发一个使用这种Web服务方法的Windows Phone 7应用程序。在Visual Studio中,我将服务referance添加到我的项目中。我创建了Webservice客户端对象,就像在.net平台中一样,创建了AuthHeader对象并设置了用户名和密码。以下代码不是我的代码,但它像我的一样:
AuthWebService.WebService webService = new AuthWebService.WebService();
AuthWebService.AuthHeader authentication = new AuthWebService.AuthHeader();
authentication.Username = "test";
authentication.Password = "test";
webService.AuthHeaderValue = authentication;
但是当我尝试使用此代码行设置服务标头时:
webService.AuthHeaderValue = authentication;
它不起作用。 webservice对象没有AuthHeaderValue属性。我在桌面应用程序或它运行的Web应用程序中尝试过它,但在Windows Phone 7应用程序中它没有。
有人对此问题有任何建议吗?谢谢你。
答案 0 :(得分:1)
这是我朋友对这个问题的解决方案,这对我有用:
public class _ServiceCredential
{
[XmlAttribute(Form = System.Xml.Schema.XmlSchemaForm.None)] [DataMember(Order = 2)]
public string Password;
[DataMember(Order = 1)]
[XmlAttribute(Form = System.Xml.Schema.XmlSchemaForm.None)]
public string Username;
}
完整的博客文章在这里:WP7 SOAP Web Service with Custom Headers
答案 1 :(得分:0)
当我尝试与SOAP服务通信时,我遇到了类似的问题。我想问题是WP7中Silverlight的版本。 您是否尝试在Windows窗体项目中引用Web服务?在我的情况下,在Windows窗体项目中添加我的SOAP Web服务没有问题,但是当我将它添加到WP7项目时,并不是所有SOAP服务的属性和方法都可用。 最后,我必须编写自己的SOPA Webservice类来与服务器通信。