2009-12-08 47 views
3

我需要使用本地服務來使用生成的XML文檔流。雖然終點本身不是REST服務。我想確保下面概述的方法是將響應返回到XDocument的最有效方法。檢索HttpWebResponse並將其放入XDocument的有效方法

Uri requestUri = null; 
Uri.TryCreate(String.Format(SearchAddress, filter), 
    UriKind.Absolute, out requestUri); 

NetworkCredential nc = 
    new NetworkCredential("Login", "Password"); 
CredentialCache cCache = new CredentialCache(); 
cCache.Add(requestUri, "Basic", nc); 

HttpWebRequest request = 
    (HttpWebRequest)HttpWebRequest.Create(requestUri); 
request.Credentials = cCache; 
request.PreAuthenticate = true; 
request.Method = WebRequestMethods.Http.Get; 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
XDocument xDoc = 
    XDocument.Load(new StreamReader(response.GetResponseStream())); 

回答

2

如果你想有一個同步的請求,那麼在我看來,是的,它是。

但它是處理引發WebException一個好主意。 在WebException.Response.GetResponseStream(),你應該有一張HTTP/HTML錯誤頁面或一個的SOAPFault。

非同步請求
//開始響應流的非同步檢索...
變種結果= request.BeginGetResponse(...)
//設置超時回調方法,BeginGetResponse doesn't超時...
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle,...)

+0

有關處理'WebException'好主意。也就是說,對於異步請求,您的修改建議是什麼? – ahsteele 2009-12-08 21:45:08

相關問題