2015-03-08 56 views
0

我試圖發送一個xml請求到一個url並且響應也將是一個xml響應。我知道如何從MVC應用程序中調用服務端點,但我不知道如何調用此URL以及如何閱讀它將使我回饋的內容。這是我迄今爲止所擁有的。這是正確的方向嗎?發送xml請求到url並收到xml響應

請求:

<CityStateLookupRequest USERID=」xxxxxxxx」> 
<ZipCode ID="0"> 
<Zip5>90210</Zip5> 
</ZipCode> 
</CityStateLookupRequest> 

響應:

<CityStateLookupResponse> 
<ZipCode ID="0"> 
<Zip5>90210</Zip5> 
<City>BEVERLY HILLS</City> 
<State>CA</State> 
</ZipCode> 
</CityStateLookupResponse> 

C#代碼:

var xmlRequest = new XElement("CityStateLookupRequest", 
       new XAttribute("USERID", "XXXXXXXXX"), 
       new XElement("ZipCode", 
        new XAttribute("ID", "0"), 
        new XElement("Zip5", "43065")));  

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(" http://production.shippingapis.com/ShippingAPI.dll"); 

byte[] bytes = System.Text.Encoding.ASCII.GetBytes(xmlRequest.ToString()); 
request.ContentType = "text/xml; encoding='utf-8'"; 
request.ContentLength = bytes.Length; 
request.Method = "POST"; 
Stream requestStream = request.GetRequestStream(); 
requestStream.Write(bytes, 0, bytes.Length); 
requestStream.Close(); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    var xmlDoc = new XmlDocument(); 

    xmlDoc.Load(response.GetResponseStream()); 
} 

回答

0

這裏是你能做到這一點,這基本上是一個表格後一種方式。

var xmlRequest = new XElement("CityStateLookupRequest", 
    new XAttribute("USERID", "XXXXXXXXX"), 
    new XElement("ZipCode", 
     new XAttribute("ID", "0"), 
     new XElement("Zip5", "43065"))); 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://production.shippingapis.com/ShippingAPI.dll");   

// parameters to post - other end expects API and XML parameters 
var postData = new List<KeyValuePair<string, string>>(); 
postData.Add(new KeyValuePair<string, string>("API", "CityStateLookup")); 
postData.Add(new KeyValuePair<string, string>("XML", xmlRequest.ToString()));  

// assemble the request content form encoded (reference System.Net.Http) 
HttpContent content = new FormUrlEncodedContent(postData); 

// indicate what we are posting in the request 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = content.Headers.ContentLength.Value; 
content.CopyToAsync(request.GetRequestStream()).Wait();       

// get response 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    // as an xml: deserialise into your own object or parse as you wish 
    var responseXml = XDocument.Load(response.GetResponseStream()); 
    Console.WriteLine(responseXml.ToString()); 
} 
+0

謝謝你,這是我需要的。 – NNassar 2015-03-11 13:17:26

相關問題