将.xml扩展名添加到WCF服务

时间:2014-01-10 03:17:30

标签: xml vb.net wcf xml-parsing windows-mobile-6.5

我有一个wcf服务,其中包含带有网址http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes的xml数据 不幸的是,我需要它用于Windows Mobile,它只知道如何处理他们的mime类型的文件。这个Mime类型大多是使用文件的扩展名来解引用的。由于文件“代码”没有扩展名,因此IE移动浏览器不知道如何处理该文件并带来错误消息。

我的搜索范围很广,但女士运气似乎并不在我身边。

现在,问题是:如何在我的wcf服务的网址中添加.xml扩展名?

1 个答案:

答案 0 :(得分:3)

这个 - http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes 是一个XML文件。您在浏览器中看到的是您正在使用的地址的RESTful服务的响应。该服务以XML格式返回数据。

您可以使用HttpClient来调用服务,然后获取响应的内容,就像这样(非常简单的示例,为您提供一般性的想法),您可以非常轻松地检索这一点:

HttpClient client = new HttpClient();

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = client.GetAsync("http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes").Result;
string xml = response.Content.ReadAsStringAsync().Result;

此代码以字符串形式返回以下内容(然后您可以将其加载到XDocument中进行解析):

<ArrayOfCodes xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Codes>
    <active>1</active>
    <id>14</id>
    <quantity>50</quantity>
    <unit>pc</unit>
    <unitid>1</unitid>
    <uom>Piece</uom>
    <value>CPQ247050-001~000</value>
  </Codes>
  <Codes>
    <active>0</active>
    <id>16</id>
    <quantity>30</quantity>
    <unit>bx</unit>
    <unitid>2</unitid>
    <uom>Box</uom>
    <value>CPQ293703-B21~000</value>
  </Codes>
  <Codes>
    <active>1</active>
    <id>17</id>
    <quantity>1</quantity>
    <unit>bx</unit>
    <unitid>2</unitid>
    <uom>Box</uom>
    <value>aaa</value>
  </Codes>
  <Codes>
    <active>1</active>
    <id>15</id>
    <quantity>100</quantity>
    <unit>pk</unit>
    <unitid>3</unitid>
    <uom>Pack</uom>
    <value>CPQ247050-001~0M0</value>
  </Codes>
  <Codes>
    <active>1</active>
    <id>18</id>
    <quantity>2</quantity>
    <unit>hf</unit>
    <unitid>5</unitid>
    <uom>Handfull</uom>
    <value>aaa</value>
  </Codes>
</ArrayOfCodes>

修改

对于Windows Mobile,请尝试以下代码(请注意,我在VS 2012上使用.NET 4.5运行此代码,因为我的计算机上没有Mobile SDK,但它有效):

string xml = "";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes");

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    using (Stream responseStream = response.GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8))
        {
            xml = reader.ReadToEnd();
        }
    }
}

以上代码基于此answer

**编辑:VB.NET **

Dim xml As String = ""

Dim request As HttpWebRequest = WebRequest.Create("http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes")

Using response As HttpWebResponse = request.GetResponse()
    Using (responseStream As Stream = response.GetResponseStream()
        Using reader As StreamReader = New StreamReader(responseStream, System.Text.Encoding.UTF8))
            xml = reader.ReadToEnd();
        End Using
    End Using
End Using