我有一个wcf服务,其中包含带有网址http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes的xml数据 不幸的是,我需要它用于Windows Mobile,它只知道如何处理他们的mime类型的文件。这个Mime类型大多是使用文件的扩展名来解引用的。由于文件“代码”没有扩展名,因此IE移动浏览器不知道如何处理该文件并带来错误消息。
我的搜索范围很广,但女士运气似乎并不在我身边。
现在,问题是:如何在我的wcf服务的网址中添加.xml扩展名?
答案 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