3

生成されたXMLドキュメントストリームを利用する必要があるローカルサービスがあります。エンドポイント自体はRESTサービスではありませんが。以下に概説する方法が、応答をに返す最も効率的な方法であることを確認したかったの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()));
4

1 に答える 1

2

同期リクエストが必要な場合、私の意見ではそうです。

ただし、WebException を処理することをお勧めします。WebException.Response.GetResponseStream() では、HTTP/HTML エラー ページまたは soapfault が発生するはずです。

非同期要求
// 応答ストリームの非同期取得を開始します...
var result = request.BeginGetResponse(...)
// タイムアウト コールバック メソッドを設定します。BeginGetResponse はタイムアウトしません...
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, .. .)

于 2009-12-08T21:37:00.283 に答える