使用Windows Phone 7使用Web服务并添加SOAP标头

本文关键字:使用 添加 SOAP 标头 Web Windows Phone 服务 | 更新日期: 2023-09-27 18:24:05

我有一个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应用程序。在VisualStudio中,我将服务引用添加到我的项目中。我创建了Web服务客户端对象,就像在.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属性。我在桌面应用程序或网络应用程序中尝试过它,但在Windows Phone 7应用程序中没有。

有人对这个问题有什么建议吗?谢谢你。

使用Windows Phone 7使用Web服务并添加SOAP标头

这是我朋友解决这个问题的方法,对我来说很有效:

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

我在尝试与SOAP服务通信时遇到了类似的问题。我想问题出在WP7中的Silverlight版本上。您是否尝试在Windows窗体项目中引用Web服务?在我的案例中,在WindowsForm项目中添加SOAP Web服务是没有问题的,但当我将其添加到WP7项目中时,并不是SOAP服务的所有属性和方法都可用。最后,我不得不编写自己的SOPAWebservice类来与服务器通信。