问题描述
|
我正在开发Windows Phone 7应用,我需要在我们公司的REST api上放置一些数据。
我正在测试此API调用,并遇到了我无法捕获的WebException。我的呼叫最初是在lambda中进行的,因此我将其拉入成员函数,但仍然没有运气。
错误字符串为“远程服务器返回错误:NotFound”。这并非意外,我的应用尝试使用的URI可能无效,因为我搞砸了,或者因为我们的登台服务器已关闭。
如果无法捕获此异常,我应该如何检查请求是否失败?
这是我的玩具示例:
void TriggerApiCall()
{
var request = HttpWebRequest.Create(new Uri(
\"http://api.ourcompany.com\" +
\"/stuff/\" +
someParameterizedPath + \"?\" +
\"firstParam=\" + someClassMember +
\"&secondParam=8badf00d\"));
request.Method = \"PUT\";
request.BeginGetResponse(TryCall,request);
}
private void TryCall(IAsyncResult result)
{
HttpWebRequest request = result.AsyncState as HttpWebRequest;
var completed = result.IsCompleted;
WebResponse response = null;
try {
bool hasresp = request.HaveResponse;
response = request.EndGetResponse(result);
} catch (Exception e) {
System.Diagnostics.Debug.WriteLine(e); // Never reaches here,// Exception propagates to top
}
response.Close();
}
解决方法
研究表明,Silverlight 3及更高版本中有一个新的ClientHttp堆栈。
http://msdn.microsoft.com/zh-cn/library/dd920295(v=vs.95).aspx