2014-01-10 71 views
0

我有一個wcf服務,其中包含帶有url的xml數據http://msi-ecs.com.ph:8090/uom/UOMws.svc/xml/codes 不幸的是,我需要它用於windows mobile,它只知道如何處理mime類型的文件。這種MIME類型通常使用文件的擴展名來解除引用。由於文件「代碼」沒有擴展名,因此IE移動瀏覽器不知道該如何處理該文件並帶來錯誤消息。向WCF服務中添加.xml擴展

我已經搜索了很多,但女士的運氣似乎並沒有在我身邊。

現在,這裏的問題是:如何爲我的wcf服務的url添加一個.xml擴展名?

回答

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> 

EDIT

對於Windows Mobile,請嘗試以下代碼(請注意,我用.NET 4.5跑這對VS 2012,因爲我沒有移動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 
+0

我不認爲這是適用於Windows Mobile。 –

+0

糟糕 - 錯過了該標籤。另一個例子是在幾分鐘內出現。 – Tim

+0

聽起來很有希望,但我不能檢查它,因爲我有'使用(暗淡b = c)'與所有這些3代碼使用的問題。哈哈。 –